Я создал плагин для Outlook, который использует AdvancedSearch для поиска всех электронных писем с UserProperty, определенным моим плагином.
Это работает на моем рабочем столе и ноутбуке, но не работает на устройстве моего клиента.Мы оба используем новейшую версию Outlook из Office 365, однако он работает на Windows 7, а я на Windows 10. Я подозреваю, что это может быть проблемой групповой политики, поскольку он является частью организации, но говорит, что это не так.полезно, если я не могу указать, какую конкретную политику необходимо изменить, или что именно вызывает проблему, поэтому он может точно сказать ИТ-отделу, что не так.
Я включил сообщения об ошибках, чтобы я мог видеть любые исключения, но ни одно не появляется.Единственное время, когда выдается исключение (насколько мне известно), это когда надстройка пытается создать папки, если они уже есть;если папки удаляются, надстройка не создает исключений.
Это код, который добавляет папки поиска
private void SearchFolders(Outlook.Application application)
{
string scope = "Inbox";
string filter = $"http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000-000000000046}}/{userProperty} = true";
Outlook.Search search = null;
Outlook.MAPIFolder folderInbox = null;
Outlook.MAPIFolder folderSentMail = null;
Outlook.NameSpace ns = null;
try
{
ns = application.GetNamespace("MAPI");
folderInbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
//MessageBox.Show(folderInbox.FolderPath.ToString());
folderSentMail = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
scope = "\'" + folderInbox.FolderPath + "\'";
search = application.AdvancedSearch(scope, filter, true);
search.Save("GDPR - indbakke");
scope = "\'" + folderSentMail.FolderPath + "\'";
search = application.AdvancedSearch(scope, filter, true);
search.Save("GDPR - Sendt post");
}
catch (Exception e)
{
MessageBox.Show(e.StackTrace, "An exception was thrown");
}
finally
{
if (search != null) Marshal.ReleaseComObject(search);
if (folderInbox != null) Marshal.ReleaseComObject(folderInbox);
if (folderSentMail != null) Marshal.ReleaseComObject(folderSentMail);
if (ns != null) Marshal.ReleaseComObject(ns);
}
}
. Переменная userProperty создается в виде строки в верхней частифайл, и это просто имя UserProperty.
Предполагается, что в папки поиска входят любые письма, для которых для свойства UserProperty установлено значение true.Однако папка поиска в папке «Входящие» иногда включает все электронные письма в папке «Входящие», в то время как папка поиска «Отправленная почта» просто ничего не включает.
Я знаю, что маркировка электронных писем работает на его устройстве, поскольку столбец, который я добавил, чтобы показать это свойство, отображается и показывает, что электронная почта помечена правильно.Это просто папки поиска, которые не работают.
Просмотр критериев поиска в OutlookSpy показывает, что на моем компьютере критерии отличаются от его.Мой компьютер показывает следующее:
rt : RES_PROPERTY
res.resProperty :
relop : RELOP_EQ
ulPropTag : GDPRMarked (0x8532000B)
lpProp :
ulPropTag : GDPRMarked (0x8532000B)
Value : true
, в то время как его компьютер показывает это для входящих сообщений:
rt : RES_EXIST
res.resExist :
ulPropTag : PR_SUBJECT_W (0x0037001F)
и это для исходящих сообщений:
rt : RES_PROPERTY
res.resProperty :
relop : RELOP_EQ
ulPropTag : http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/GDPRMarked (0x8569001F)
lpProp :
ulPropTag : http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/GDPRMarked (0x8569001F)
Value : true