我的 java 代码向用户发送电子邮件时遇到问题。电子邮件的编码存在一些问题。当电子邮件到达电子邮件帐户时,主题行 ($subject) 存在编码问题,因为我的主题文本末尾添加了奇怪的字符 (?)。
电子邮件内容本身很好,只是主题行(?)我已经搜索遍了,但找不到,在使用 Unicode 和内容类型作为 text/html 邮件正文后,特殊字符没有问题
(ó
) 但相同的修复不适用于主题行。
我有一个使用 javamail 发送电子邮件的类,其文本如下 主题中的这一点:
"Estimado Iván Escobedo:
问题是,当邮件到达目的地时,它 到达方式如下:
"Estimado Iv?n Escobedo:
所有á
、é
、í
、ó
、ú
、等特殊字符替换为 ?
。
问题可能是什么以及如何解决?
最佳答案
您应该使用类似的东西来正确阅读消息:
TextMessage txtMessage = (TextMessage)message;
ByteArrayInputStream bais = new ByteArrayInputStream(txtMessage.getText().getBytes ("ISO-8859-15"))
编辑:
Sanjay 找到了解决方案。
为了在发送之前正确设置消息,请使用:
MimeUtility.encodeText(SubjectText, "ISO-8859-15", "Q")
Encode a RFC 822 "text" token into mail-safe form as per RFC 2047.
The given Unicode string is examined for non US-ASCII characters. If the string contains only US-ASCII characters, it is returned as-is. If the string contains non US-ASCII characters, it is first character-encoded using the specified charset, then transfer-encoded using either the B or Q encoding. The resulting bytes are then returned as a Unicode string containing only ASCII characters.
请注意,此方法应用于仅对“非结构化”RFC 822 header 进行编码。
关于java - 奇怪的字符(?)添加到我的主题文本的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378084/