通过 LotusScript 发送的 MIME 消息中的多个收件人和抄送 headers

Multiple To and Cc headers in MIME message sent through LotusScript

我正在构建一个循环遍历一组文档的 LotusScript 代理,然后 - 基于给定条件 - 创建具有格式化 html 文本的邮件消息。收件人将主要是 Non-Notes 用户(Outlook 等),这就是为什么我要确保主题和消​​息 body 格式正确。不过,至少有一份副本被发送到 Domino mail-in 数据库。

代码基本上创建了一个 MimeEntity,设置 "To"、"CC" 和 "Subject" headers 然后将 pre-configured 消息放入邮件 body 并发送出去。

关于 body 我尝试了一个简单的 MimeEntity 格式为 "text/html" 以及一个多部分消息 (Content-Type = "multipart/alternative") 2 child 个实体(1:"text/plain" 没有任何格式,2:"text/html" 即 html-formatted);在我的最终代码中,我打算采用后一种方法。

真正奇怪的是收件人(使用 Outlook 以及 Thunderbird 等其他邮件客户端)看到 3 "To:" 和 3 "Cc:" 个项目,而不是一个。查看接收 Domino mail-in 数据库中的文档,每个项目只有一个实例(即 SendTo 和 CopyTo)。

这是消息的源代码(取自 Thunderbird),显示了每个项目的 3 个实例:

Return-Path: <sendername@myorg.de>
Received: (removed info here)
Subject: =?UTF-8?B?RWluIGdlbcO8dGxpY2hlcyBzaW1wbGVzIFRlc3RtYWlsIGF1cyBTT1A=?=
MIME-Version: 1.0
Auto-Submitted: auto-generated
To: user1@orgext1.de, user2@orgext2.de
CC: my-mail-in-db@myorg.de
To: user1@orgext1.de, user2@orgext2.de
CC: my-mail-in-db@myorg.de
To: user1@orgext1.de, user2@orgext2.de
CC: my-mail-in-db@myorg.de
Message-ID: <OFBCA50979.C1582837-ONC125856E.00548385-C125856E.0054838A@MYORG.DE>
From: Lothar Mueller <sendername@myorg.de>

这是创建这些邮件的基本代码(简单 non-multipart 版本):

Set docMemo = db.Createdocument()
Call docMemo.Replaceitemvalue("Form", "Memo")
Set nMimeBody = docMemo.Createmimeentity()

'SendTo
Set nMimeHead = nMimeBody.Createheader("To")
Call nMimeHead.Setheaderval("user1@otherorg.de,user2@3rdorg.de")

'CopyTo
Set nMimeHead = nMimeBody.Createheader("CC")
Call nMimeHead.Setheaderval("my-mail-in-db")

'Subject
Set nMimeHead = nMimeBody.Createheader("Subject")
Call nMimeHead.Addvaltext("Subject with ä-ö-ü-ß", "UTF-8")

'html version only for simple non-multipart MIME
Call nStream.Writetext({<p style="font-weight:bold;">Some simple formatted HTML content</p>})
Call nMimeBody.Setcontentfromtext(nStream, {text/html; charset="UTF-8"}, ENC_NONE)
Call nStream.Close()

'finally send
Call docMemo.Send(False)

现在,我可以通过简单地将收件人设置为普通的旧 Notes 项目来解决此问题,例如:

Call docMemo.SendTo = recipientArray
Call docMemo.CopyTo = copyArray

而不是将这些值设置为 MIME headers。在这种情况下,收件人的邮件客户端不再有 "To" 和 "CC" 项目的多个实例。

我知道几年前我已经在另一个项目中做过这件事,那时我没有遇到这些问题。

有人知道这可能是什么原因吗?会不会是使用的 Domino 版本的问题(现在是 10.0.1 FP4,当时是 9.0.1 的某个版本)?

我猜我找到了这个原因,至少是部分原因:

正如我在 post 的更新中提到的,只有当代理在客户端 运行 而不是在服务器 运行 时才能观察到此行为:

通过 Ytria 的 scanEZ 检查生成的邮件,我发现在创建的字段方面存在差异:

  1. run-on-server 版本只创建预期的字段 "To:" 和 "Cc:",它们在生成的 Notes 文档中显示为 "SendTo" 和 "CopyTo"
  2. 如果客户端中的代码是 运行,则会在 Notes 文档中创建更多字段:除了标准字段之外,还有 "INetSendTo"、INetCopyTo、"AltSendTo" 和"AltCopyTo"。我假设这些额外的字段然后由路由器呈现为添加 "To:" 和 "Cc:" header 项。

再次感谢@DaveDelay 提出关于路由器的想法,mail.box