首页 > 解决方案 > 通过 LotusScript 发送的 MIME 消息中的多个 To 和 Cc 标头

问题描述

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

该代码基本上创建了一个 MimeEntity,设置“To”、“CC”和“Subject”标头,然后将预先配置的消息放入邮件正文并发送出去。

关于正文,我尝试使用格式为“text/html”的简单 MimeEntity 以及带有 2 个子实体的多部分消息(Content-Type = “multipart/alternative”)(1:“text/plain”没有任何格式,2:“text/html”,即 html 格式);在我的最终代码中,我计划采用后一种方法。

真正奇怪的是收件人(使用 Outlook 以及 Thunderbird 等其他邮件客户端)看到 3 个“To:”和 3 个“Cc:”项目,而不仅仅是一个。查看接收 Domino 邮件数据库中的文档,每个项目只有一个实例(即 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>

这是创建这些邮件的基本代码(简单的非多部分版本):

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 标头。在这种情况下,收件人的邮件客户端不再有多个“收件人”和“抄送”项目的实例。

我知道几年前我已经在另一个项目中这样做了,那时我没有这些问题。

任何人都知道这可能是什么原因?可能是因为使用的 Domino 版本(现在是 10.0.1 FP4,当时是 9.0.1 版本)?

标签: emaillotus-dominolotusscriptmime-message

解决方案


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

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

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

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

再次感谢@DaveDelay 提出关于路由器和邮箱的想法


推荐阅读