Outlook Interop: найти почту в папке отправленных - PullRequest
0 голосов
/ 07 мая 2020

Я создаю MailItem из приложения WPF и показываю его пользователю:

Application _application = new Application();
MailItem mailItem = _outlook.CreateItem(OlItemType.olMailItem);
mailItem.Display(false);

После того, как пользователь щелкнул Отправить MailItem сохраняется в db ( Затем MailItem связывается с PK):

_application.ItemSend += Application_ItemSend;
// ...
private void Application_ItemSend(object Item, ref bool Cancel)
{
    MailItem mailItem = Item as MailItem;
    // Save mailItem in db ...
}

После этого мне нужно найти MailItem, когда он скопирован в папку отправленных Outlook, и пометить его в db как «отправлено»:

private static void TrackSentFolder(Data.Entity.Person person)
{
    MAPIFolder sentFolder = _nameSpace.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
    // Find previously created MailItem ...

В своем исследовании я пробовал несколько способов найти MailItem в папке отправленных:

  1. Отметить MailItem используя UserProperty перед отправкой
  2. Отметить MailItem используя PropertyAccessor перед отправкой
  3. Сохранить MailItem вместе с PR_SEARCH_KEY в БД

Я нахожу это довольно запутанным.

Есть ли рекомендуемый как найти ранее созданный MailItem в папке отправленных?

1 Ответ

1 голос
/ 07 мая 2020

Нет рекомендуемого способа идентифицировать товар после его отправки. Какой путь выбрать - решать вам. Можно использовать любой метод, описанный в вашем сообщении.

Имейте в виду, что папку Sent Items можно пропустить, если установлено свойство MailItem.DeleteAfterSubmit . Также свойство MailItem.SaveSentMessageFolder позволяет установить объект Folder, представляющий папку, в которой будет сохранена копия сообщения электронной почты после отправки.

...