我的java代码向用户发送电子邮件时遇到问题。电子邮件的编码存在一些问题。当电子邮件到达电子邮件帐户时,主题行($ subject)会出现编码问题,因为在我的主题文本末尾添加了奇怪的字符(?)。
电子邮件内容本身很好,只是主题行(?)我已经搜索了所有但无法找到,使用Unicode和内容类型作为text / html邮件正文没有特殊字符的问题
(ó
)但相同的修复不适用于主题行。
我有一个发送带有javamail的电子邮件的类,文本类似于 这个主题:
“EstimadoIvánEscobedo:
问题是当邮件到达目的地时,它 以这种方式到达:
“Estimado Iv?n Escobedo:
所有á
,é
,í
,ó
,ú
等特殊字符都替换为?
。
可能是什么问题以及如何解决?
答案 0 :(得分:2)
您应该使用类似的东西来正确阅读邮件:
TextMessage txtMessage = (TextMessage)message;
ByteArrayInputStream bais = new ByteArrayInputStream(txtMessage.getText().getBytes ("ISO-8859-15"))
修改:
Sanjay找到了解决方案。
为了在发送前正确设置消息,请使用:
MimeUtility.encodeText(SubjectText, "ISO-8859-15", "Q")
根据RFC 2047将RFC 822“text”令牌编码为邮件安全表单。
检查给定的Unicode字符串是否包含非US-ASCII字符。如果字符串仅包含US-ASCII字符,则按原样返回。如果字符串包含非US-ASCII字符,则首先使用指定的字符集进行字符编码,然后使用B或Q编码进行传输编码。然后,生成的字节将作为仅包含ASCII字符的Unicode字符串返回。
请注意,此方法应仅用于编码“非结构化”RFC 822标头。