簡體   English   中英

在Outlook VSTO中獲取收件人的電子郵件地址+閱讀郵件提示

[英]Get email address of a recipient in Outlook VSTO + Read MailTips

我目前在使用VSTO為2010年創建的Outlook外接程序時遇到問題,該外接程序是我開發的,用於確定電子郵件地址是位於組織內部還是位於組織外部。

發送電子郵件時,我正在使用下面的MAPI屬性讀取收件人的電子郵件地址。 其中addr是AddressEntry對象。

Microsoft.Office.Interop.Outlook.PropertyAccessor pa = addr.PropertyAccessor;
smtpAddress = pa.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E").ToString();

這對於交換聯系人和本地聯系人都適用。 但是,如果您創建本地聯系人並從“全局通訊簿”中選擇電子郵件地址,則該MAPI屬性在該特定聯系人中不存在。 我只需要知道查找聯系人(電子郵件地址)是在組織內部還是在組織外部的最佳方法(這種方法也會降低性能,我組織中的某些人會向500多人發送電子郵件用戶一次,並且通過上述MAPI屬性處理內部/外部電子郵件掃描需要花費超過10分鍾的時間)。 我知道Outlook已在“新電子郵件”窗口上顯示與郵件提示相同的信息。 所以我的問題是

  1. 有沒有辦法利用MailTip並從中讀取信息?

  2. 如果否,那么查找聯系電子郵件地址是否在組織內部/外部的最佳方法是什么(考慮績效)

Outlook對象模型不提供任何內容來讀取郵件提示。

嘗試改用以下代碼:

private string GetSenderSMTPAddress(Outlook.MailItem mail)
{
    string PR_SMTP_ADDRESS =
       @"http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
    if (mail == null)
    {
        throw new ArgumentNullException();
    }
    if (mail.SenderEmailType == "EX")
    {
       Outlook.AddressEntry sender =
          mail.Sender;
       if (sender != null)
       {
           //Now we have an AddressEntry representing the Sender
           if (sender.AddressEntryUserType ==
               Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry
               || sender.AddressEntryUserType ==                    Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
           {
               //Use the ExchangeUser object PrimarySMTPAddress
               Outlook.ExchangeUser exchUser =
                   sender.GetExchangeUser();
               if (exchUser != null)
               {
                   return exchUser.PrimarySmtpAddress;
               }
               else
               {
                   return null;
               }
           }
           else
           {
               return sender.PropertyAccessor.GetProperty(
                   PR_SMTP_ADDRESS) as string;
           }
       }
       else
       {
           return null;
       }
   }
   else
   {
       return mail.SenderEmailAddress;
   }
}

請參閱如何:獲取郵件項目的發件人的SMTP地址 此外,您可能會發現“ 方法:將基於Exchange的電子郵件地址轉換為SMTP電子郵件地址”一文很有幫助。

只能使用EWS訪問郵件提示-請參閱https://msdn.microsoft.com/zh-cn/library/office/dd877060%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396

如果使用“兌換”是一個選項,則它公開RDOAddressEntry 返回RDOMailTips對象的GetMailtips方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM