java - 奇怪的字符(?)添加到我的主题文本的末尾

标签 java character-encoding jms jakarta-mail

我的 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")

encodeText :

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/

相关文章:

java - 错误 : The JMS Connection has failed: java. io.EOFException

java - 使用 Hibernate 4.1 进行 SchemaExport 期间出现 Hsqldb 错误

java - MainPanel 不监听嵌套 JPanel 内的 KeyBinding

java - 使用字符集解码器以逐字节方式解码多字节 UTF8 符号?

php - 无法用字符串中的 &pound 替换 £

java - 从 Bittorrent 的 DHT Bootstrap 获取困惑回复

jboss - 在 JBoss 6.0 中延迟启动 JMS 监听器 (MDB)

java - 使用 MQ JMS 连接到 IBM MQ 时出现 MQRC_NOT_AUTHORIZED 错误

Java 运营商有趣的问题

java - 从 ArrayOfByte 中逐字节提取