#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);
}