我正在使用以下命令从PST中删除电子邮件。
foreach (Redemption.RDOMail oitem in filteredItems)
{
try
{
oitem.Delete();
}
catch (Exception ex)
{
PSTLog.Log("Exception in DeleteEmails: " + ex.Message);
}
}
兑换DLL表示电子邮件已成功删除。如果我尝试使用Redemption DLL再次读取PST,则会收到较少的电子邮件,这很有意义。但是,我仍然能够在Outlook中看到已删除的电子邮件。尝试了诸如在Outlook中关闭/重新打开Outlook以及分离/重新附加PST的选项,但没有帮助。
Outlook是否可能将结果缓存到其他位置并导致这种差异? Outlook版本是2016。
任何帮助将不胜感激!
答案 0 :(得分:0)
如果要修改集合,请不要使用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);
}