如何从Word VBA的电子邮件地址设置Outlook

时间:2018-09-22 23:33:33

标签: vba ms-word outlook-vba email-integration

我正在尝试使用Word VBA将文档发送给电子邮件收件人。在大多数情况下,这并不困难。到目前为止,我已经有了这段代码:

With oItem
    'Set the recipient for the new email
    .To = "person1@mail.com"
    'Set the recipient for a copy
    .CC = "ccperson@mail.com"
    'Set the subject
    .Subject = "Blah blah"
End With

我的问题是我在Outlook中配置了多个发件人电子邮件地址,并且Outlook默认情况下选择了错误的一个。

是否可以使用上述方法指定发件人电子邮件地址?不用说,用于指定发件人地址(.From = me@wherever.com)的直观代码行不起作用。谢谢。

更新:

我使用下面的peakpeak和Dimitry的建议修改了代码,终于使我的代码可以工作。我的更改是

1)包括对Microsoft Outlook 16对象库的引用,这样我就可以访问Outlook.MailItem数据类型。邮件可以使用上面的代码很好地发送(不带参考),但始终使用错误的发件人地址发送邮件。

2)将邮件项目声明为Outlook.MailItem。这似乎启用了SentOnBehalfOfName字段。

3)在SentOnBehalfOfName字段中使用了我想要的发件人:电子邮件地址。

这是工作代码:

Dim MAPIMailItem As Outlook.MailItem
Set MAPIMailItem = olkApp.CreateItem(olMailItem)  'Create a new mail message
With MAPIMailItem
    .BodyFormat = olFormatPlain
    .to = strTo

   ' SentOnBehalfOfName sets the From field on my machine,
   ' AFTER I declared MAPIMailItem as Outlook.MailItem
    .SentOnBehalfOfName = "fromAddress@foo.com"

    .Subject = strSubject
    .body = strBody
    .attachments.Add strAtt
   '.send
    .Display
End With

2 个答案:

答案 0 :(得分:2)

如果通过Exchange帐户发送邮件,请设置MailItem.SentOnBehalfOfName属性(假设您有权代表指定的邮箱发送邮件)。如果通过POP3 / SMTP帐户发送,请设置MailItem.SendUsingAccount属性。

答案 1 :(得分:2)

我使用以下代码:

Dim WantedAccount as String ' Set to preferred account name
Set MAPISession = objOutlook.Application.Session     'Get the MAPI Outlook session

Set MAPIMailItem = objOutlook.CreateItem(olMailItem)  'Create a new mail message
With MAPIMailItem
  For Each Account In MAPISession.Accounts
    If Account = WantedAccount Then
      .SendUsingAccount = Account
      Exit For
    End If
  Next