我需要以编程方式在用户计算机上打开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中使用预定义字段(包括密件抄送)打开新的消息窗口,我可以通过一个文件生成服务器端,然后发送给用户打开?
答案 0 :(得分:0)
Outlook对象模型提供了三种使用项主体的主要方法:
由您决定选择哪种方式。有关详细信息,请参阅Chapter 17: Working with Item Bodies。
您可以使用“附件”类的Add方法,该方法会在“附件”集合中创建新附件。例如:
Sub AddAttachment()
Dim myItem As Outlook.MailItem
Dim myAttachments As Outlook.Attachments
Set myItem = Application.CreateItem(olMailItem)
Set myAttachments = myItem.Attachments
myAttachments.Add "D:\Documents\Q496.xlsx", _
olByValue, 1, "4th Quarter 1996 Results Chart"
myItem.Display
End Sub
最后,您可能会发现How to automate Outlook from another program文章很有帮助。
答案 1 :(得分:0)
您的VBS文件不能进行UTF-8编码,但VB脚本可以正常使用UTF-16编码文件。我从记事本中以UTF-16编码保存的以下文件没有问题:
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名 <bcc@domain.com>"
objmessage.Subject = "E-Mail Subject"
objmessage.Body = "Here comes some text"
objmessage.display
set objmessage = Nothing
set objoutlookApp = Nothing