Библиотеки DLL Outlook Redemption — Не удается удалить электронные письма в PST

#outlook #outlook-redemption #pst

#outlook #outlook-redemption #pst

Вопрос:

Я использую приведенную ниже команду для удаления электронных писем из PST.

 foreach (Redemption.RDOMail oitem in filteredItems)
{
    try
    {
        oitem.Delete();
    }
    catch (Exception ex)
    {
        PSTLog.Log("Exception in DeleteEmails: "   ex.Message);
    }
}
  

Библиотеки DLL для восстановления указывают, что электронные письма были успешно удалены. Если я попытаюсь снова прочитать PST, используя библиотеки DLL для восстановления, я получу меньшее количество сообщений электронной почты, что имеет смысл. Тем не менее, я все еще могу видеть удаленные электронные письма в Outlook. Пробовал такие варианты, как закрытие / повторное открытие Outlook и отсоединение / повторное подключение PST в Outlook, но это не помогло.

Возможно ли, что Outlook кэширует результаты в другом месте и вызывает это несоответствие? Версия Outlook 2016.

Будем признательны за любую помощь!!

Ответ №1:

Не используйте foreach циклы, если вы изменяете коллекцию. Используйте цикл « for » вниз:

 foreach ( int i = filteredItems.Count; i > 0; i--)
{
    Redemption.RDOMail oitem = filteredItems[i];
    try
    {
        oitem.Delete();
    }
    catch (Exception ex)
    {
        PSTLog.Log("Exception in DeleteEmails: "   ex.Message);
    }
    Marshal.ReleaseComObject(oitem);
}