获取Outlook.MailItem的父文件夹emailaddress?

时间:2016-03-03 13:32:17

标签: c# outlook vsto office-addins

在VSTO中,我有一个Outlook.MailItem的邮件项目。

如果我检查mailitem.FolderPath,那么我会看到" \ info \ inbox" (在这种情况下是共享邮箱)。

由于我的用户拥有不同的共享邮箱,因此我不知道什么是邮箱" \ info"是(可能是info@mycompapny.com,info @ myothercompany.com等)。

如何从mailitem获取共享邮箱的电子邮件地址(info@mycompapny.com)?

由于

1 个答案:

答案 0 :(得分:0)

文件夹没有内部地址,但Exchange邮箱存储有。

您可以尝试

  1. 使用PR_MAILBOX_OWNER_ENTRYID(DASL名称Store.PropertyAccessor.GetProperty)从商店中检索http://schemas.microsoft.com/mapi/proptag/0x661B0102属性,但它仅由在线商店公开,高速缓存商店不公开它。

  2. 解析Exchange商店条目ID以提取商店所有者的DN,然后创建GAL用户条目ID。

  3. 您可以查看配置文件数据以查找商店所有者条目ID。

  4. 如果使用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