0

我正在使用 Spring MimeMessageHelper 发送电子邮件,它在后台使用 JavaMail API。我想有一个选项来输入收件人的姓名,如下所示:

private static void setTo(final EmailDTO emailDTO, MimeMessageHelper helper) throws MessagingException {
  if (StringUtils.isBlank(emailDTO.getToName())) {
    helper.setTo(emailDTO.getToEmail());
  } else {
    helper.setTo(emailDTO.getToName() + " <" + emailDTO.getToEmail() + ">");
  }

}

但是,这会引发

javax.mail.internet.AddressException: Illegal character in address ( Őry József <mail@testcompany.com> )

..当名称中有重音字符时。在这种情况下,我应该使用哪个函数对名称进行编码?

4

1 回答 1

2
MimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("stalin@ussr.su", "Товарищ Сталин"));

结果是:

To: =?UTF-8?B?0KLQvtCy0LDRgNC40Ykg0KHRgtCw0LvQuNC9?= <stalin@ussr.su>

请参阅http://docs.oracle.com/javaee/6/api/javax/mail/Message.html#addRecipient(javax.mail.Message.RecipientType, javax.mail.Address)

于 2014-05-30T11:30:13.917 回答