2017-05-08 75 views
1

在Outlook互操作, using Outlook = Microsoft.Office.Interop.Outlook; 要篩選未讀郵件,我用下面的代碼要過濾收件箱中發送給其他收件人的郵件嗎?

Outlook.Application oApp = new Outlook.Application(); 
Outlook.NameSpace outlookNameSpace = oApp.Application.GetNamespace("MAPI"); 
Outlook.MAPIFolder inbox = outlookNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); 
Outlook.Items items = inbox.Items.Restrict("[Unread]=true"); 

同樣,有沒有辦法來篩選發送到比我其他特定收件人的郵件。

說,濾波器郵件發送到[email protected]
我的郵件ID也將存在於在達到或處於CC那些郵件。我會更樂意通過Outlook interop找到一種可能的方式。

回答

1

您可以使用搜索查詢類似下面的搜索在PR_DISPLAY_TO MAPI屬性匹配(與0x0E03001F取代0x0E04001F爲PR_DISPLAT_CC)

@SQL="http://schemas.microsoft.com/mapi/proptag/0x0E04001F" LIKE '%[email protected]%' 

但是請記住這PR_DISPLAT_TO/PR_DISPLAY_CC可能會或可能不會包含電子郵件地址;他們可能只包含顯示名稱。

在擴展MAPI級別(C++或Delphi),你可以創建收件人(RES_SUBRESTRICTION/PR_MESSAGE_RECIPIENTS)的限制。

如果使用Redemption(任何語言)是一種選擇,你可以使用RDOFolder。 Items.Restrict - 與Outlook對象模型,它擴展到/ CC/BCC查詢到受體子限制對每個收件人(RES_SUBRESTRICTION/PR_MESSAGE_RECIPIENTS/RES_OR/PR_DISPLAY_NAME | PR_EMAIL_ADDRESS)PR_DISPLAY_NAMEPR_EMAIL_ADDRESS性能。

set Session = CreateObject("Redemption.RDOSession") 
Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID) 
set restrItems = Folder.Items.Restrict(" TO = '[email protected]' ") 

您還可以指定在aquery Recipients屬性 - 它會針對所有類型的接受者相匹配(到/ CC/BB):

set restrItems = Folder.Items.Restrict(" Recipients = '[email protected]' ") 
相關問題