1

我在 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);

什么可能导致这种情况?

4

1 回答 1

1

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

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

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

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

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

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

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

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

于 2019-03-10T16:21:47.907 回答