如何从模板填充电子邮件的发件人、收件人、抄送?



我在Outlook中使用VBA来调用电子邮件模板。我希望 VBA 填充"发件人"、"收件人"、"抄送"字段。

VBA 打开模板并创建新的电子邮件,但"发件人"、"收件人"和"抄送"字段为空。

Sub Step_1()

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
Set msg = Application.CreateItemFromTemplate("C:MyfolderTemplatesAction Required documents needed.oft")

With OutMail
.SentOnBehalfOfName = "homebase@gmail.com"
.To = "Jane.Doe@customer.com"
.CC = "homebase@gmail.com"
msg.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

我的理解,有两种方法:

  1. 使用CreateItem方法创建默认项
  2. 使用CreateItemFromTemplate方法,以便您可以基于模板创建项目

让我们从第一种方法开始。语法如下:expression.CreateItem(ItemType),其中expression返回Application对象,ItemType是必需参数(您可以选择:olContactItemolDistributionItemolMailItem等(。因此,您可以像这样创建一封新电子邮件:

Sub email_option1()
Dim msg As MailItem
Set msg = Application.CreateItem(ItemType:=olMailItem)
With msg
.To = 'recipient
.CC = 'CCs
.Subject = 'subject
.Body = 'body of the email
.Attachments.Add ("C:AttachmentsTest File.docx") 'if any attachments needed
.Importance = olImportanceHigh 'if it is important
.Display 'or .Send
End With
Set msg = Nothing
End Sub

或者您可以选择第二种方法,正如您提到的那样,您可能想要准备好一个模板。语法将是:expression.CreateItemFromTemplate(TemplatePath, InFolder),其中表达式再次返回一个Application对象,TemplatePath是必需的字符串参数,告诉我们要使用的模板所在的位置。InFolder是我从不使用的可选参数(不完全确定它的作用(。所以你的代码可能是这样的:

Sub email_option2()
Dim msg As MailItem
Set msg = Application.CreateItemFromTemplate("C:MyfolderTemplatesAction Required documents needed.oft")
With msg
.To = "Jane.Doe@customer.com"
.CC = "homebase@gmail.com"
.Subject = 'subject
.Display 'or .Send
End With
Set msg = Nothing
End Sub

至于.SentOnBehalfOfName = "homebase@gmail.com"线。我不确定它能做什么。查看此处:SentOnBehalfOfName Microsoft帮助,SentOnBehalfOfName 的问题或更多关于 SentOfBehalfOfName 的问题。如果这是您想要实现的目标,那么您只需将此行放回代码即可。

相关内容

最新更新