使用VBScript CDO.Message创建电子邮件时如何设置重复的标题而不会覆盖?

时间:2018-10-02 10:36:26

标签: vbscript email-headers cdo.message

我正在尝试使用VBScript CDO.Message生成一些电子邮件,代码如下。

接收客户IBM(Lotus)Notes需要使用多次重复的一个标头“ X-Notes-Item”提供的许多信息。

[..snip..]
From: [from@hidden].com
X-Notes-Item: value 1; name=Key1
X-Notes-Item: value 2; name=Key2
X-Notes-Item: value 3; name=Key3
MIME-Version: 1.0
Content-type: text/html; charset=UTF-8
[..snip..]

但是似乎脚本只设置了一次标题,然后重复覆盖了它,因此仅发送X-Notes-Item的最终值。

Option Explicit

Dim objMessage, objShell

Set objShell = CreateObject("wscript.Shell")
Set objMessage = CreateObject("CDO.Message")

With objMessage
    .Subject = "[Blah]"
    .From = "[from@hidden].com"
    .Sender = "[sender@hidden].com"
    .To = "[to@hidden].com"
    .Fields("urn:schemas:mailheader:X-Notes-Item") = "value 1; name=Key1"
    .Fields("urn:schemas:mailheader:X-Notes-Item") = "value 2; name=Key2"
    .Fields("urn:schemas:mailheader:X-Notes-Item") = "value 3; name=Key3"
    .Fields.Update

    .HTMLBody = "<html><body><p>[Blah]</p></body></html>"

    .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "PWNOTSMTP"
    .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Configuration.Fields.Update
    .Send
End With

Set objMessage=Nothing

我也尝试过使用列表,但出现错误

  

字段更新失败。有关更多信息,请检查单个字段对象的Status属性。

但是我一点也不精通VBScript,所以不知道这是否接近正确的实现方式,或者它永远无法正常工作?

'...
Dim list
Set list = CreateObject("System.Collections.ArrayList")
list.Add "value 1; name=Key1"
list.Add "value 2; name=Key2"
list.Add "value 3; name=Key3"

With objMessage
    '...
    .Fields("urn:schemas:mailheader:X-Notes-Item") = list
    .Fields.Update
    '...
End With
'...

此外,我还抓着稻草,尝试在每个标题行之间添加一个.Fields.Update,可以预见没有区别

是否存在一种简单的方法,我完全不愿意添加一组重复的标头?

0 个答案:

没有答案