如何在MimeMessageHelper的“to”字段中添加重音字符?

时间:2014-05-30 11:13:11

标签: spring javamail mime-message

我正在发送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> )

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

1 个答案:

答案 0 :(得分: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)