I am writing a piece of Java code that needs to send mail to users with non-ASCII names. I have figured out how to use UTF-8 for the body, subject line, and generic headers, but I am still stuck on the recipients.
Here's what I'd like in the "To:" field: "ウィキペディアにようこそ" <[email protected]>
. This lives (for our purposes today) in a String called recip
.
msg.addRecipients(MimeMessage.RecipientType.TO, recip)
gives"忙俾ェ▎S]" <[email protected]>
msg.addHeader("To", MimeUtility.encodeText(recip, "utf-8", "B"))
throwsAddressException: Local address contains control or whitespace in string ``=?utf-8?B?IuOCpuOCo+OCreODmuODh+OCo+OCouOBq+OCiOOBhuOBk+OBnSIgPA==?= =?utf-8?B?Zm9vQGV4YW1wbGUuY29tPg==?=''
How the heck am I supposed to send this message?
Here's how I handled the other components:
- Body HTML:
msg.setText(body, "UTF-8", "html");
- Headers:
msg.addHeader(name, MimeUtility.encodeText(value, "utf-8", "B"));
- Subject:
msg.setSubject(subject, "utf-8");