在VSTO中,我有一个Outlook.MailItem的邮件项目。
如果我检查mailitem.FolderPath,那么我会看到" \ info \ inbox" (在这种情况下是共享邮箱)。
由于我的用户拥有不同的共享邮箱,因此我不知道什么是邮箱" \ info"是(可能是info@mycompapny.com,info @ myothercompany.com等)。
如何从mailitem获取共享邮箱的电子邮件地址(info@mycompapny.com)?
由于
答案 0 :(得分:0)
文件夹没有内部地址,但Exchange邮箱存储有。
您可以尝试
使用PR_MAILBOX_OWNER_ENTRYID
(DASL名称Store.PropertyAccessor.GetProperty
)从商店中检索http://schemas.microsoft.com/mapi/proptag/0x661B0102
属性,但它仅由在线商店公开,高速缓存商店不公开它。
解析Exchange商店条目ID以提取商店所有者的DN,然后创建GAL用户条目ID。
您可以查看配置文件数据以查找商店所有者条目ID。
如果使用Redemption是一个选项,它会公开RDOExchangeMailboxStore。所有者属性:
skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
for each Store in Session.Stores
If (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
MsgBox "Store " & Store.Name & " is owned by " & Store.Owner.SmtpAddress
End If
next
如果您只想要某个特定文件夹的父商店,请尝试下面的脚本(它显示Outlook当前显示的文件夹的所有者)
skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Store = Session.GetStoreFromID(Application.ActiveExplorer.CurrentFolder.StoreID)
if (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
MsgBox "Store " & Store.Name & " is owned by " & Store.Owner.SmtpAddress
End If