Я выполняю настраиваемое действие для всех входящих ответов через надстройку VSTO. Надстройка будет сравнивать ConversationID входящего ответа с существующим электронным письмом. Это работает нормально, если мне нужно искать внутри одной папки, но моя проблема в том, что электронная почта может быть в любой папке в магазине. Вот мой код.
void items_ItemAdd(object Item)
{
Outlook.Application application = new Outlook.Application();
string filter = "RE: ";
Outlook.MailItem mail = (Outlook.MailItem)Item;
Outlook.Folder folder = mail.Parent as Outlook.Folder;
if (Item != null)
{
if (mail.MessageClass == "IPM.Note" && mail.Subject.ToUpper().Contains(filter.ToUpper()))
{
var RequiredMail = (from e in folder.Items.Cast<Outlook.MailItem>().OrderBy(X => X.ReceivedTime).Where(C => C.ConversationID == mail.ConversationID) select mail).FirstOrDefault();
// Perform custom action
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Кроме того, я прочитал, что поиск электронной почты с использованием Linq не очень эффективен. Есть ли другой, более эффективный способ получить RequiredMail
?
Любая помощь будет высоко оценена.
Спасибо.