C # VSTO — изменить почтовый элемент в обработчике событий ItemSend?

#c# #outlook #vsto #outlook-addin

#c# #outlook #vsto #outlook-добавление

Вопрос:

Возникла проблема с изменением почтового элемента в обработчике событий ItemSend до фактической отправки этого почтового элемента. Почтовый элемент, измененный с помощью DeferredDeliveryTime, будет находиться в папке Исходящие и никогда не будет отправлен. Тот же результат, если вызывается MailItem.Save() или нет. Теперь я предполагаю, что успешное изменение почтового элемента в этом обработчике событий требует определенных шагов или подхода. Любые рекомендации будут оценены.

 private void ItemSendEventHandler(object Item, ref bool Cancel)
{
  if (Item is MailItem)
  {
    try
    {
      MailItem mailItem = Item as MailItem;

      if (someCondition == true) 
      {
        // Defer by 60 seconds (will be rounded to the nearest minute)
        mailItem.DeferredDeliveryTime = DateTime.Now.AddSeconds(60);
        mailItem.Save();
      }
    }
    catch (System.Exception ex)
    {
      LogFile.LogException(ex);
    }
  }
}
 

Комментарии:

1. Затем вы просматриваете папку исходящих? Имейте в виду, что прикосновение к элементу, отправляемому с помощью OOM или Outlook UI, прерывает процесс отправки

2. Да, просматриваю папку исходящих после установки точки останова в ItemSend, чтобы убедиться, что код выполняется без ошибок. Я подозреваю, что прикосновение к элементу на этом этапе (ItemSend), вероятно, прерывает отправку. Есть предложения о том, как обойти это?

3. ItemsSend вызывается до фактической отправки сообщения (отсюда и параметр Cancel). Включена ли у вас панель чтения в папке Исходящие?

4. Панель чтения для папки исходящих отключена.

5. Выделено ли сообщение курсивом в папке исходящих?