我正在尝试使用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
答案 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