首页 文章

生成文件以使用密件抄送字段打开Outlook新邮件

提问于
浏览
0

我需要以编程方式在用户计算机上打开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 回答

  • 0

    Outlook对象模型提供了三种使用项主体的主要方法:

    • Body - 没有任何mnarkup的纯文本 .

    • HTMLBody - 表示邮件正文的HTML标记 .

    • Word编辑器 . Inspector类的WordEditor属性返回表示邮件正文的Word文档实例 . 因此,您可以使用Word对象模型对邮件正文执行任何操作 .

    这取决于你选择哪种方式 . 有关更多信息,请参见Chapter 17: Working with Item Bodies .

    您可以使用Attachments类的Add方法,该方法在Attachments集合中创建新附件 . 例如:

    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文章很有帮助 .

  • 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
    

相关问题