回答
主题是一个头。标题只使用ascii-7,所以要正确地编码没有ascii-7字符,你应该使用正确的编码。
如果您正在使用的类允许您使用UTF-8指示某些编码尝试。
mimeMessage.setSubject(yourSubject, "UTF-8");
如果你手写的标题使用任何的这个:
MimeUtility.encodeWord(yourSubject, "UTF-8", "B"); // base-64
MimeUtility.encodeWord(yourSubject, "UTF-8", "Q"); // quoted-printable
这或多或少什么的MimeMessage确实在SETSUBJECT(STR,编码):
setHeader("Subject", MimeUtility.fold(9, MimeUtility.encodeText(subject, charset, null)));
// fold splits the value in several lines with no more than 72 chars
样本
我试过这个:
public static void main(String[] args) throws Exception {
// manual encoding
System.out.println(MimeUtility.encodeText("How to include £ pound symbol", "UTF-8", "Q"));
System.out.println(MimeUtility.encodeText("How to include £ pound symbol", "UTF-8", "B"));
// MimeMessage encoding
MimeMessage m = new MimeMessage((Session) null);
m.setSubject("How to include £ pound symbol", "UTF-8");
m.setContent("lalala", "text/plain");
m.writeTo(System.out);
}
输出功率为:
=?UTF-8?Q?How_to_include_=C2=A3_pound_symbol?=
=?UTF-8?B?SG93IHRvIGluY2x1ZGUgwqMgcG91bmQgc3ltYm9s?=
(...)
Message-ID: <[email protected]>
Subject: =?UTF-8?Q?How_to_include_=C2=A3_pound_symbol?=
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
lalala
反正你总是可以使用:
String yourEncodedString = MimeUtility.encodeText(str, "UTF-8", "Q");
mimeMessage.setHeader("Subject", yourEncodedString);
设置你的编码设置为UTF-8 ..
msg.setContent(message,"text/html; charset=UTF-8");
这表明该MIME部分(主要内容)的主体的编码,但它不涉及到标题编码(主题在哪里)。我不确定Message的实现是否也使用这种编码来正确编码标题(特别是如果他们需要自己奇怪的编码) – helios
这会影响主题行吗? –
啊,太慢了。已经在 –
- 1. Jinja2英镑符号£
- 2. 英镑符号(#)在PHP
- 3. 从ASP.NET字符串中消失的英镑符号(英镑)
- 4. 英镑符号PHP的fopen
- 5. 嵌套的英镑符号问题
- 6. 英镑符号不显示在Wordpress中
- 7. 英镑符号不使用java.mail包在邮件内容中工作?
- 8. 通过PHP发送电子邮件,英镑符号
- 9. Oracle用英镑代替英镑INSERT
- 10. Scrapy代码:文字与英国英镑符号导致问题使用蜘蛛
- 11. 从XML文件中显示Flash中的英镑符号
- 12. 编码问题:英镑符号出现为<?>符号
- 13. Html字符集问题(英镑符号来作为问号)
- 14. android - 英镑符号被破坏
- 15. 防止Vim从英镑符号“#”开始?
- 16. Perl JSON英镑符号转义
- 17. 英镑符号从数字格式?
- 18. PHP删除英镑符号(£)从价格
- 19. 在asp.net的Outlook中显示英镑符号的问题
- 20. 英镑符号(£)在生成CSV文件显示为£
- 21. 如何在iOS5中显示英镑符号
- 22. Codeigniter似乎打破了$ _POST的'英镑'字符(英镑)
- 23. 如何从XSLT中的XML特性中删除英镑符号?
- 24. 动态生成标题标记中的英镑符号
- 25. 英镑符号(£)Zend形式的长度或字符集问题?
- 26. 英镑符号(#)导致错误的文件名称
- 27. 无法将英镑或欧元符号写入CSV文件 - Nodejs
- 28. 如何显示Java Swing中的英镑(£)符号?
- 29. 密码在WCF中不能包含英镑?
- 30. 如何将英镑符号从C#Web应用程序正确导出到Excel? (而不是英镑)
设置消息字符集为UTF-8 。 –
@君子:这是* header *编码的问题,而不是内容编码。 – helios