Ahm*_*gle 11 java jakarta-mail character-encoding
我正在使用Javamail(javax.mail)发送邮件.我成功地将我的邮件内容调整为utf-8.但是我无法将主题行设置为utf-8编码的字符串.
我甚至试过了
mail.setSubject(new String(subject.getBytes("utf-8"), "utf-8"));
Run Code Online (Sandbox Code Playgroud)
然而它仍然以Cp1252发送.邮件的示例标题如下:
有任何想法吗?
来自邮件标题的示例http://m.friendfeed-media.com/a328a80db12f3c17a8aed06be106045354355abf
Mic*_*zka 26
您应该使用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]);
Run Code Online (Sandbox Code Playgroud)
在MimeUtility中,据说:
根据RFC 2047,有一组编码和解码MIME头的方法.请注意,通常,在使用setSubject和setRecipients等方法时不需要这些方法.使用这些"更高级别"方法时,JavaMail将自动对数据进行编码和解码.只有在使用setHeader和getHeader方法编写原始MIME头时才需要使用以下方法.
从我的角度来看,Message.setSubject应该是这个目的的切入点.
该cp1252在你的主题编码显示出来,因为它是你的平台上的标准编码.
您发布的示例是"结果"
mail.setSubject(MimeUtility.encodeText(subject, "cp1252", "Q"));`
Run Code Online (Sandbox Code Playgroud)
Ahm*_*gle 23
解决了.
mail.setSubject(MimeUtility.encodeText(subject, "utf-8", "B"));
Run Code Online (Sandbox Code Playgroud)
解决它并发送utf-8编码的邮件主题.\n /
"encoding"的合法值是"Q"和"B"......当要编码的大多数字符都是ASCII字符集时,建议使用"Q"编码; 否则,应使用"B"编码.
见http://tools.ietf.org/html/rfc2047.
| 归档时间: |
|
| 查看次数: |
34465 次 |
| 最近记录: |