email - 通过 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 版本)?
解决方案
猜猜我找到了原因,至少部分是:
正如我在帖子更新中提到的,只有当代理在客户端运行而不是在服务器上运行时,才能观察到这种行为:
通过 Ytria 的 scanEZ 检查生成的邮件,我发现在创建的字段方面存在差异:
- 在服务器上运行的版本只是创建了预期的字段“To:”和“Cc:”,它们在生成的 Notes 文档中显示为“SendTo”和“CopyTo”
- 如果代码在客户端运行,Notes 文档中会创建更多字段:除了标准字段之外,还有“INetSendTo”、INetCopyTo、“AltSendTo”和“AltCopyTo”。我假设这些额外的字段然后由路由器呈现为附加的“To:”和“Cc:”标题项。
再次感谢@DaveDelay 提出关于路由器和邮箱的想法
推荐阅读
- sql - sql bigquery:从嵌套字段中提取“:”之后的字符串
- postgresql - 如何使用 TypeORM 设置与自定义 id 名称的多对多关系
- quarkus - 可以使用 Apache 骆驼路由在 quarkus 上执行 JMS 消息传递吗?
- rust - 如何在 Rust 未来中赋予所有权
- database-design - 在我的数据库中授予约束尊重的最佳方式(触发器或过程)
- python - 使用 cat 和命令行参数解析器调用的 python 模块
- python - + 不支持的操作数类型:“dict_items”和“dict_items”......类型错误
- typescript - 如何在 stenciljs 中设置 foreignObject 的宽度和高度?
- html - 响应式弹出窗口 CSS
- android - 如何设置历史申请日期?