我正在编写一段Java代码,需要向名称中包含非ASCII字符的用户发送电子邮件。我已经知道如何使用UTF-8对正文、主题行和通用头进行处理,但我仍然卡在了收件人上。
以下是我想在“收件人:”字段中使用的内容:
以下是我处理其他组件的方式:
"ウィキペディアにようこそ" <foo@example.com>
。这个内容(仅限今天的目的)存储在一个名为recip
的字符串中。
msg.addRecipients(MimeMessage.RecipientType.TO, recip)
得到"忙俾ェ▎S]" <foo@example.com>
msg.addHeader("To", MimeUtility.encodeText(recip, "utf-8", "B"))
抛出AddressException: Local address contains control or whitespace in string ``=?utf-8?B?IuOCpuOCo+OCreODmuODh+OCo+OCouOBq+OCiOOBhuOBk+OBnSIgPA==?= =?utf-8?B?Zm9vQGV4YW1wbGUuY29tPg==?=''
以下是我处理其他组件的方式:
- 正文HTML:
msg.setText(body, "UTF-8", "html");
- 标题:
msg.setSubject(subject, "utf-8");
- 头:
msg.addHeader(name, MimeUtility.encodeText(value, "utf-8", "B"));