VBA Outlook:如何获取所选文件夹帐户的SMTP地址

时间:2019-01-13 12:00:43

标签: vba email outlook directory

我在Outlook中有不同的帐户。 根据当前选择的文件夹,我想找到相应帐户的smtp电子邮件地址。 (文件夹名称没有帮助)

我知道如何获取帐户的smtp电子邮件地址: (olApp.Session.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress)

我知道如何获取当前选择的文件夹甚至它的商店名称: (olApp.ActiveExplorer.CurrentFolder.store.DisplayName)

但是我找不到如何链接这两个信息...

有什么想法吗?

thx:)

2 个答案:

答案 0 :(得分:0)

Private Sub storeAddress_from_DisplayName()

Dim storeDisplayName As String
Dim storeSMTPAddress As String

Dim storeRecipient As Recipient

' DisplayName and PrimarySmtpAddress can be the same

storeDisplayName = ActiveExplorer.CurrentFolder.Store.DisplayName
Debug.Print " storeDisplayName: " & storeDisplayName

Set storeRecipient = Session.CreateRecipient(storeDisplayName)

If storeRecipient.AddressEntry.Type = "EX" Then
    storeSMTPAddress = storeRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
    Debug.Print " storeSMTPAddress: " & storeSMTPAddress
End If

End Sub

答案 1 :(得分:0)

理论上,您可以解析EX商店条目ID以提取EX地址,然后使用它来构建可用于调用Namespace.GetAddressEntryFromID的GAL条目ID。您可以在MFCMAPI source code中查看如何解析商店条目(在C ++中)。

如果使用Redemption是一个选项,它将公开RDOExchangeMailboxStoreOwner属性(返回RDOAddressEntry对象,而后者又公开SMTPSAddress属性):

Set MySession = CreateObject("Redemption.RDOSession")
MySession.MAPIOBJECT = Application.Session.MAPIOBJECT
set Store = MySession.GetStoreFromID(Application.ActiveExplorer.CurrentFolder.StoreID)
MsgBox Store.Owner.SmtpAddress