Domino 10有时无法在Java下解码MIME标头

时间:2019-03-09 15:28:14

标签: java javamail lotus-domino mime ibm-domino

我有一个运行在Domino 10.0.1服务器上的Java 1.8程序,该程序读取POP3 / IMAP MIME消息并从中创建Notes MIME邮件文档。

一切正常,除了一些(很少)消息不转换已编码的MIME标头。然后,它们以丑陋的格式显示在Notes客户端中。

From: =?utf-8?Q?Test=20Subject?= <anyname@acme.com>

我在所有可能的地方都设置了“ UTF-8”,并禁止将MIME转换为富文本格式。

properties.setProperty("mail.mime.charset", "UTF-8");
...
boolean savedConversionFlag = dbGetSession().isConvertMime();
dbGetSession().setConvertMime(false);

是什么原因造成的?

1 个答案:

答案 0 :(得分:1)

我刚刚尝试了一个实验。我从Gmail帐户向主题收件箱中发送了主题为中文的电子邮件。 Domino将主题存储为 RFC822文本项,如下所示:

Subject: =?UTF-8?B?5oiR6IO95ZCe5LiL546755KD6ICM5LiN5Lyk6Lqr5L2T44CC?=

当我在Notes中查看消息时,它会正确显示汉字。

根据我的实验和您的评论,我认为您是将编码后的字符串存储在纯文本项目中,而不是RFC822文本中。两者之间的差别很小,但是您可以通过查看Notes中的文档属性来验证这一点。如果要将值存储在纯文本项中,则Notes不知道应该对其进行解码。

因此,我认为您可以通过两种选择在Notes中完成此工作:

  1. 像现在一样,以纯文本格式存储项目,但首先将字符串解码。我认为JavaMail可以帮助您完成解码步骤。

  2. 保留该值的编码,但将其存储为RFC822文本项。这就是Domino路由器的工作。

由于我不确定100%如何使用Notes Java类执行#2,所以我可能会从第一个选项开始。