簡體   English   中英

在VSTO中使用交換電子郵件搜索Outlook收件箱

[英]Search outlook inbox with exchange email in VSTO

我正在嘗試在一個加載項中想通過電子郵件地址進行搜索,但是問題是由於Outlook連接到Exchange服務器,所以所有電子郵件地址都以Exchange格式顯示。 我想要實現的是像在本示例代碼中那樣通過電子郵件本身進行搜索-

MAPIFolder inboxFolder = Application.ActiveExplorer().Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
Items emails = inboxFolder.Items.Restrict($"[SenderEmailAddress] = abc@xyz.com");

當然, SenderEmailAddress與實際的電子郵件地址不匹配,因為SenderEmailAddress為Exchange格式。

目前,我必須遍歷所有電子郵件,然后使用這段代碼來保留查找實際電子郵件地址的時間,但這顯然很耗時,因此我想知道是否有解決方法。

private static string GetSenderEmailAddress(MailItem mail)
{
    AddressEntry sender = mail.Sender;
    string SenderEmailAddress = "";

    if (sender.AddressEntryUserType == OlAddressEntryUserType.olExchangeUserAddressEntry || sender.AddressEntryUserType == OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
    {
        ExchangeUser exchUser = sender.GetExchangeUser();
        if (exchUser != null)
        {
            SenderEmailAddress = exchUser.PrimarySmtpAddress;
        }
     }
     else
     {
            SenderEmailAddress = mail.SenderEmailAddress;
     }

     return SenderEmailAddress;
}

大多數Exchange郵件還將發件人SMTP地址顯示為單獨的屬性( PidTagSenderSmtpAddress使用OutlookSpy查看郵件:單擊IMessage按鈕)。

您可以將搜索查詢修改為以下內容:

@SQL=(SenderEmailAddress = 'abc@xyz.com') or ("http://schemas.microsoft.com/mapi/proptag/0x5D01001F" = 'abc@xyz.com')

暫無
暫無

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

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