我試圖搜索我的收件箱和主題行中給定字符串的所有子文件夾。我在線發現了以下代碼(https://www.add-in-express.com/creating-addins-blog/2012/05/31/outlook-search-csharp-vbnet/),但它返回的結果不是預期結果。使用AdvancedSearch for Outlook和C#返回零結果
我看着器下的視圖設置在Outlook中,在Outlook中的探險家返回結果給定的搜索詞,得到這個查詢:當我插上「http://schemas.microsoft.com/mapi/proptag/0x0037001f」 LIKE「%票務%」 在下面代碼我同樣得到零結果。
當我使用LINQ來查詢這些文件夾(LINQ太慢而不能成爲真正的解決方案)時,我可以得到結果,所以我猜測我正在用advancedsearch發出語法錯誤。在網上很難找到使用的例子。我會感謝任何能夠幫助我的人。
private Search RunAdvancedSearch(Outlook._Application OutlookApp, string wordInSubject)
{
string advancedSearchTag = "New Search";
string scope = "Inbox";
string filter = "\"urn:schemas:mailheader:subject\" LIKE '%"+ wordInSubject +"%'";
Outlook.Search advancedSearch = null;
Outlook.MAPIFolder folderInbox = null;
Outlook.MAPIFolder folderSentMail = null;
Outlook.NameSpace ns = null;
try
{
ns = OutlookApp.GetNamespace("MAPI");
folderInbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
folderSentMail = ns.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderSentMail);
scope = "\'" + folderInbox.FolderPath +
"\',\'" + folderSentMail.FolderPath + "\'";
advancedSearch = OutlookApp.AdvancedSearch(
scope, filter, true, advancedSearchTag);
System.Diagnostics.Debug.WriteLine(advancedSearch.Results.Count);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message, "An exception is thrown!");
}
finally
{
if (advancedSearch != null) Marshal.ReleaseComObject(advancedSearch);
if (folderSentMail != null) Marshal.ReleaseComObject(folderSentMail);
if (folderInbox != null) Marshal.ReleaseComObject(folderInbox);
if (ns != null) Marshal.ReleaseComObject(ns);
}
return advancedSearch;
}
我將._Application改爲.Application,但我的結果是相同的 - 零。你有沒有其他想法? – zenijos10