2015-02-11 264 views
0

我試圖使用過濾器上SearchFilter.ContainsSubstring Exchange Web服務的電子郵件如下:EWS SearchFilter.ContainsSubstring要過濾的發件人的電子郵件地址

sfilter = New SearchFilter.ContainsSubstring(EmailMessageSchema.Sender, EmailAddress, ContainmentMode.Substring, ComparisonMode.IgnoreCase) 
MailItems = service.FindItems(Folder.Id, sfilter, view) 

不幸的是,這並不工作,我不想要使用查詢,因爲我不能保證我可以使用Exchange Server 2013的功能。

在Fiddler中編寫各種請求,我可以觀察到如果我刪除電子郵件地址的最後一個字符,那麼過濾器的作品,刪除第一個字符,工程 - 把他們回來,破碎。

所以也許它是迂腐的,它必須是一個真正的子字符串來限定,所以如果我改變包容模式爲FullString - 它不起作用,所以我不能做任何事情像一個集合與子字符串或FullString 。

它看起來像我將能夠做到的(最後一個字符缺失的子字符串和第一個字符缺失的子字符串),但它肯定不能被破壞嗎?

我能做些什麼才能使其發揮作用?

請注意,我的代碼是在VB.NET中,但我無法想象這是問題所在。

乾杯,

馬克

回答

1

我發現IsEqualTo過濾器與From/Sender一起工作,並不關心區分大小寫的問題,所以它可能是我應該嘗試開始的。

的代碼相匹配的電子郵件地址是:

sfilter = New SearchFilter.IsEqualTo(EmailMessageSchema.From, New EmailAddress(Message.FromAddress)) 
MailItems = service.FindItems(FailureFolder.Id, sfilter, iv) 

我還是不知道如何找到用戶的所有郵件在同一領域,但。

更多信息:

我真的需要通過發件人域篩選並沒有通過和篩選拉動整個文件夾內容的.Net代碼。即使這會導致問題。

基本上讓事情變得快速而緊張,我試圖把所有的數據與屬性集:

New PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.Sender) 

過濾仍然沒有工作,但電子郵件地址在我的名單依然表現出的物品查看。事實證明,Message.Sender的值包含某種ActiveDirecty路徑,直到調用LoadPropertiesForItems。在LoadPropertiesForItems之後,它是一個電子郵件地址。

請注意,我之前在服務器上進行過濾的嘗試已遭到破壞,因爲必須根據ActiveDirectory路徑的字符串樣式進行過濾。

這一切都非常混亂,而且根本不方便用戶使用。

如果有人對如何在服務器上通過電子郵件域進行過濾有任何想法,請告訴我!

馬克

0

什麼是你的目標是什麼?發件人不是字符串屬性,所以我不驚訝ContainsSubstring的結果很奇怪。我對Office 365進行了嘗試,結果很奏效,但舊版Exchange可能不會像處理這種查詢那樣「聰明」。根據你想要達到的目標,可能會有更好的過濾器。

+0

我注意到,有更多的從不是一個簡單的文本字符串/發件人特性,但使用SearchFilter,你需要一個propertyBase對象。什麼是來自電子郵件地址字符串的PropertyBase對象?我找不到一個。 – 2015-02-12 10:00:40

相關問題