邮件头中的Unicode字符的翻译

时间:2012-01-04 12:30:28

标签: java email unicode

我目前正在开发一个模块,它可以从服务器以多种语言向客户发送邮件。

  • 我已将邮件内容(to,subject和body)存储在数据库中并从中检索。

  • 所有邮件内容都作为unicode存储在数据库中(例如:ضنتةى以显示阿拉伯字符。)

  • 我正在使用Apache的commons-email api发送邮件。 (版本:commons-email-1.1.jar)。

  • 在JAVA编码。

  • 使用Gmail SMTP主机发送的邮件。

  • 当客户发送和接收邮件时 - >翻译邮件正文并显示阿拉伯字符。

问题:主题显示我的数据库中的unicode。翻译不会发生。

我知道必须完成一些邮件头配置,但不知道是什么以及如何配置。 RFC 2047似乎也提供了解决方案,但我如何使用这个特定的RFC?

提前致谢。 -Chandan

2 个答案:

答案 0 :(得分:3)

正如@deceze所说,你并没有“真正”使用unicode。您正在使用HTML表示法来标记unicode字符。您的电子邮件正文格式为HTML,因此电子邮件客户端就像浏览器一样解释它们。

电子邮件主题不是HTML格式化主体的一部分,因此未正确显示。

您应该切换到真正使用unicode,即将DB编码定义为UTF-8并存储unicode文本,这样您就不会看到像ضنتةى这样的文本,而是会看到ضنتةى。

在这种情况下,一切都会奏效。如果由于任何原因无法执行此操作,则必须在java代码中执行“翻译”。

除了这个翻译之外,您还应该从右到左指定文档方向rtl。否则,文本将在具有默认从左到右文档方向的系统上向左调整。

答案 1 :(得分:0)