Outlook Redemption DLLs - невозможно удалить электронные письма в PST - PullRequest
0 голосов
/ 15 марта 2019

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

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

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

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

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

1 Ответ

0 голосов
/ 15 марта 2019

Не используйте петли 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);
}
...