我需要以编程方式在用户计算机上打开Outlook 2016,其中包含新消息,其中包含预定义字段(To,Bcc,UTF-8正文,附件) . 为此,我需要生成一个outlook作为新消息打开的文件,或者生成outlook打开新消息的脚本 .
这可能看起来很简单,但实际上很棘手 . 例如,我会以生成.eml文件的方式执行此操作,其内容如下:
From: info@m.net
To: to@m.net
Cc: cc@m.net
Bcc: bcc@m.net
X-Unsent: 1
Subject: Something
This is a test message.
Multipart can be used to add attachment.
问题是这不起作用,因为如果这个文件是由outlook(作为.eml文件)打开的,outlook可以打开它,但它完全忽略了Bcc行 .
所以在另一次迭代中,我会尝试制作一个VBS脚本:
Set objoutlookApp = CreateObject("Outlook.Application")
Set objmessage = objoutlookApp.CreateItem(olMailItem)
objmessage.TO = "mail1@domain.com;mail2@example.de"
objmessage.CC = "cc1@x.com;cc2@y.de"
objmessage.BCC = "bcc@domain.com"
objmessage.Subject = "E-Mail Subject"
objmessage.Body = "Here comes some text"
objmessage.display
set objmessage = Nothing
set objoutlookApp = Nothing
wscript.quit
这看起来好一点,但仍然不够 . 首先,VBS文件不能是UTF-8格式,因此不可能用中文发送电子邮件,例如,我需要能够直接将UTF-8编码的字符串写入正文,因为它需要是单文件解决方案 . 第二,我不知道如何以这种方式添加atachments(multipart) .
有没有办法在outlook中使用预定义字段(包括密件抄送)打开新的消息窗口,通过一个文件我可以生成服务器端然后发送给用户打开?
2 回答
Outlook对象模型提供了三种使用项主体的主要方法:
Body - 没有任何mnarkup的纯文本 .
HTMLBody - 表示邮件正文的HTML标记 .
Word编辑器 . Inspector类的WordEditor属性返回表示邮件正文的Word文档实例 . 因此,您可以使用Word对象模型对邮件正文执行任何操作 .
这取决于你选择哪种方式 . 有关更多信息,请参见Chapter 17: Working with Item Bodies .
您可以使用Attachments类的Add方法,该方法在Attachments集合中创建新附件 . 例如:
最后,您可能会发现How to automate Outlook from another program文章很有帮助 .
您的VBS文件不能是UTF-8编码,但VB脚本可以正常使用UTF-16编码文件 . 我从记事本以UTF-16编码保存的以下文件没有问题: