Domino 10 有时不解码 Java 下的 MIME headers

Domino 10 sometime does not decode MIME headers under Java

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

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

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

我已在所有可能的地方设置 "UTF-8" 并禁用 MIME 到 rich-text 的转换。

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

这可能是什么原因造成的?

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

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

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

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

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

  1. 像您目前所做的那样以纯文本形式存储项目,但首先解码字符串。我假设 JavaMail 能够帮助解码步骤。

  2. 对值进行编码,但将其存储为 RFC822 文本项。这就是 Domino 路由器的作用。

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