。SendUsingAccount选择不适用于.onmicrosoft.com自定义域帐户

问题描述 投票:0回答:2

我为我的Microsoft 365商业帐户设置了一个自定义域(“ @ company.com”是自定义域,它实际上是“ @ company.onmicrosoft.com”)。除了“ @ company.com”帐户外,我还有另外两个帐户,它们通过“ @ yahoo.com”,“ @ gmail.com”之类的其他邮件服务器)

我创建了一个VBA子程序来发送电子邮件,并根据需要使用.SendUsingAccount发送不同的帐户。该功能按“ @ yahoo.com”,“ @ gmail.com”帐户的广告方式工作,但是当我要选择“ @ Company.com”(默认)帐户时,该帐户基本上是“ @ company.onmicrosoft.com” ”帐户,它将选择紧随其后的“ @ yahoo.com”帐户。

这里是代码:

For i = 1 To OlApp.Session.Accounts.Count
    If OlApp.Session.Accounts.Item(i).SmtpAddress = "[email protected]" Then AccNo = i
    ' Debug.Print "Acc name: " & OlApp.Session.Accounts.Item(i) & " Acc number: " & i & " , email: " & OlApp.Session.Accounts.Item(i).SmtpAddress
Next i
Set objOlAccount = OlApp.Session.Accounts.Item(i)
Set OlMail = OlApp.CreateItem(olMailItem)
Set OlMail.SendUsingAccount = objOlAccount

[当我运行Debug.Print时,我看到i = 1的“ [email protected]帐户,i = 2的” @ yahoo.com“帐户,i = 3的” @ Gmail.com“帐户。

我什至强迫选择:设置objOlAccount = OlApp.Session.Accounts.Item(1),但我的“ @ yahoo.com”帐户仍用于发送电子邮件。

有人知道如何将发送帐户设置为我的“ @ company.com”(“ @ company.onmicrosft.com”)帐户吗?

vba outlook office365 email-integration
2个回答
0
投票
Set objOlAccount = OlApp.Session.Accounts.Item(i)

应该是

Set objOlAccount = OlApp.Session.Accounts.Item(AccNo)

可能会更好:

For i = 1 To OlApp.Session.Accounts.Count
    If OlApp.Session.Accounts.Item(i).SmtpAddress = "[email protected]" Then
        Set objOlAccount = OlApp.Session.Accounts.Item(i)
        Exit For
    End If
Next i

If Not objOlAccount Is Nothing then
    Set OlMail = OlApp.CreateItem(olMailItem)
    Set OlMail.SendUsingAccount = objOlAccount
End If

0
投票

如果您通过Outlook中的Exchange帐户发送邮件,它将始终使用该帐户的默认SMTP地址。

要解决此问题,您需要使用直接SMTP发送(如果使用的是代理地址之一,它将保留正确的发件人地址)。在最终用户级别,您可以使用Proxy Manager.

之类的实用程序

如果只是“ @ company.com”与“ @ company.onmicrosoft.com”的问题,则需要在Exchange管理控制台中将“ @ company.com”地址设置为默认地址。

© www.soinside.com 2019 - 2024. All rights reserved.