Ich schreibe einen Teil des Java-Codes, der E-Mails an Benutzer mit Nicht-ASCII-Namen senden muss. Ich habe herausgefunden, wie UTF-8 für den Rumpf, die Betreffzeile und generische Header zu verwenden, aber ich bin immer noch auf die Empfänger fest.Senden Sie javax.mail.internet.MimeMessage an einen Empfänger mit Nicht-ASCII-Namen?
Folgendes möchte ich im Feld "An:": "ウィキペディアにようこそ" <[email protected]>
. Dies lebt (für unsere Zwecke heute) in einem String namens recip
.
msg.addRecipients(MimeMessage.RecipientType.TO, recip)
gibt"忙俾ェ▎S]" <[email protected]>
msg.addHeader("To", MimeUtility.encodeText(recip, "utf-8", "B"))
wirftAddressException: Local address contains control or whitespace in string ``=?utf-8?B?IuOCpuOCo+OCreODmuODh+OCo+OCouOBq+OCiOOBhuOBk+OBnSIgPA==?= =?utf-8?B?Zm9vQGV4YW1wbGUuY29tPg==?=''
Wie zum Teufel soll ich diese Nachricht senden?
Hier ist, wie ich die anderen Komponenten behandelt:
- Körper HTML:
msg.setText(body, "UTF-8", "html");
- Headers:
msg.addHeader(name, MimeUtility.encodeText(value, "utf-8", "B"));
- Betreff:
msg.setSubject(subject, "utf-8");
Verwandte Frage und Lösung: http://StackOverflow.com/A/5650455/923560 – Abdull