我正在使用Javamail(javax.mail)发送邮件。我成功地将邮件内容调整为utf-8。但是,我无法将主题行设置为utf-8编码的字符串。

我什至尝试过

mail.setSubject(new String(subject.getBytes("utf-8"), "utf-8"));

在主题上,但是它仍然以Cp1252的形式发送。邮件中的示例 header 如下:

有任何想法吗?

example from mail headers http://m.friendfeed-media.com/a328a80db12f3c17a8aed06be106045354355abf

最佳答案

您应该使用setSubject(String subject, String charset),它是用于此目的的便捷函数。

Session session=Session.getDefaultInstance(new Properties());
MimeMessage mimeMsg= new MimeMessage(session);
String subject="Herr Müller reist nach \u0141\u00f3d\u017a.";
mimeMsg.setSubject(subject,"utf-8");
System.out.println(subject);
System.out.println(mimeMsg.getHeader("Subject")[0]);

MimeUtility中说:



从我的角度来看,Message.setSubject应该是此目的的入口点。

显示主题编码中的cp1252,因为它是平台上的标准编码。

您发布的示例是的“结果”
mail.setSubject(MimeUtility.encodeText(subject, "cp1252", "Q"));`

10-01 05:57
查看更多