DLL-файлы Outlook Redemption - невозможно удалить электронные письма в PST

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

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

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

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

Любая помощь будет оценена по достоинству!


person Akshay    schedule 14.03.2019    source источник


Ответы (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);
}
person Dmitry Streblechenko    schedule 14.03.2019