[英]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.