使用非ASCII名称将javax.mail.internet.MimeMessage发送给收件人吗?

好好对待你的mods:

我正在编写一段Java代码,该代码需要将邮件发送给具有非ASCII名称的用户。我已经弄清楚了如何对正文,主题行和通用标头使用UTF-8,但是我仍然停留在收件人上

这是我在“收件人:”字段中想要的:"ウィキペディアにようこそ" <[email protected]>(针对我们今天的目的)这存在于名为的字符串中recip

  • msg.addRecipients(MimeMessage.RecipientType.TO, recip)"忙俾ェ▎S]" <[email protected]>
  • 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.addHeader(name, MimeUtility.encodeText(value, "utf-8", "B"));
  • 学科: msg.setSubject(subject, "utf-8");
好好对待你的mods:

gh,它是通过一个愚蠢的骇客获得的:

/**
 * Parses addresses and re-encodes them in a way that won't cause {@link MimeMessage}
 * to freak out. This appears to be the only robust way of sending mail to recipients
 * with non-ASCII names. 
 * 
 * @param addresses  The usual comma-delimited list of email addresses.
 */
InternetAddress[] unicodifyAddresses(String addresses) throws AddressException {
    InternetAddress[] recips = InternetAddress.parse(addresses, false);
    for(int i=0; i<recips.length; i++) {
        try {
            recips[i] = new InternetAddress(recips[i].getAddress(), recips[i].getPersonal(), "utf-8");
        } catch(UnsupportedEncodingException uee) {
            throw new RuntimeException("utf-8 not valid encoding?", uee);
        }
    }
    return recips;
}

我希望这对某人有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用javax.mail发送给多个收件人

PHP mail()仅发送给单个收件人

Python - 使用 smtplib 发送给多个收件人

使用nodemailer将邮件发送给多个收件人

使用MailMessage将电子邮件发送给多个收件人?

使用宏将电子邮件发送给特定收件人

Docusign 使用 replyEmailAddressOverride 将签名的文档发送给不同的收件人

将多个 Excel 工作簿发送给相关收件人

将地址指定为“收件人”,但不要发送给他们

DocuSign API将即时提醒电子邮件发送给待处理的收件人

为什么mailgun仅将电子邮件发送给授权的收件人?

将邮件发送给codeigniter中的多个收件人

将消息发送给多个收件人时,Swift /核心数据获取到数组

Android:将短信发送给多个收件人并获得确认

通过身份验证将电子邮件发送给多个收件人

Rails Mailer:根据匹配条件将电子邮件发送给收件人

如何按顺序将docusign草稿信封发送给收件人?

Django错误通知电子邮件将发送给不正确的收件人

如何使用php发送给多个电子邮件收件人

使用友好的名称将电子邮件扩展消息发送给多个收件人

Spring Mail集成-如何将org.springframework.messaging.Message转换为javax.mail.internet.MimeMessage

使用嵌套循环将日常工作列表通过电子邮件发送给每个收件人

使用Mailkit或mimekit将一封电子邮件发送给多个收件人

仅在使用Jquery Ajax将邮件发送给收件人之后,如何显示成功消息

使用带有MailKit个人SMTP交易将电子邮件发送给多个收件人

Neo4j希望返回发件人,将多个唯一的附件发送给收件人

一个PHP表单,根据选择的选项将电子邮件发送给不同的收件人

无需将BCC与SparkPost API结合使用即可将单个电子邮件发送给多个收件人

使用sp_send_dbmail的存储过程将电子邮件发送给从数据库查询的多个收件人