我正在使用Office 365(Outlook版本1909内部版本12026.20264)。
我配置了两个电子邮件帐户(a@a.com和b@b.com)和一个共享邮箱(shared@b.com)。
使用我的b@b.com帐户,我有权从shared@b.com发送电子邮件。
我可以从所有帐户(a @ a.com,b @ b.com,shared @ b.com)手动发送电子邮件。
我有VBA代码,可以使用SentOnBehalfOfName属性从shared@b.com发送电子邮件。
Sub TEST()
Dim origEmail As MailItem
Dim replyEmail As MailItem
Set origEmail = Application.ActiveWindow.Selection.Item(1)
Set replyEmail = Application.CreateItemFromTemplate("C:\...\Template.oft")
replyEmail.SentOnBehalfOfName = "shared@b.com"
replyEmail.HTMLBody = replyEmail.HTMLBody & origEmail.Reply.HTMLBody
replyEmail.Subject = "RE:" + origEmail.Subject
replyEmail.Display
End Sub
通常,这可以正确发送电子邮件。我可以看到他们进入了b@b.com帐户中的已发送文件夹。
有时,它尝试使用a@a.com帐户发送电子邮件(该帐户无权从shared@b.com发送电子邮件)。我在a@a.com上收到一封错误电子邮件,并且该电子邮件未发送。
如何更改代码,以便每次我从shared@b.com发送电子邮件时,都会使用我的b@b.com帐户?
注意:我将b@b.com帐户设置为默认帐户。
答案 0 :(得分:1)
您需要将SendUsingAccount
属性设置为与b@b.com邮箱相对应的Account
对象。
Sub TEST()
Dim origEmail As MailItem
Dim replyEmail As MailItem
Set origEmail = Application.ActiveWindow.Selection.Item(1)
Set replyEmail = Application.CreateItemFromTemplate("C:\...\Template.oft")
for each acc in Application.Session.Accounts
if acc.DisplayName = "b@b.com" Then
replyEmail.SendUsingAccount = acc
Exit for
End If
next
replyEmail.SentOnBehalfOfName = "shared@b.com"
replyEmail.HTMLBody = replyEmail.HTMLBody & origEmail.Reply.HTMLBody
replyEmail.Subject = "RE:" + origEmail.Subject
replyEmail.Display
End Sub