0

在我删除超过 15 天的邮件项的几个公用文件夹中,大约有 15 个特定的公用文件夹。每个公用文件夹都有大约 1000 多个邮件项。每周都是相同数量的物品。目前我正在获取默认的公用文件夹并循环每个子文件夹并删除邮件。

Microsoft.Office.Interop.Outlook.Folder tempInbox = tempApp.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders) as Microsoft.Office.Interop.Outlook.Folder;
**SOME Code***
foreach (Microsoft.Office.Interop.Outlook.Folder subfolder1 in     subfolder.Folders)
{
if ((check those 14 subfolder names )& (subfolder1.Folders.Count > 0))
{
    CheckCountries(subfolder1, sw);
}
}
CheckCountries(subfolder1, sw) -> Here I am comparing and deleting the mail items.

//Deletion part of code below
foreach (object todel in delItem)
{
DateTime d1 = DateTime.Now;
Microsoft.Office.Interop.Outlook.MailItem mailitmType = todel as  Microsoft.Office.Interop.Outlook.MailItem;
if (mailitmType is Microsoft.Office.Interop.Outlook.MailItem)
{
    if ((mailitmType.IsConflict != true) &  (mailitmType.MessageClass.Contains("IPM.Note.SMIME") == false))
    {
    DateTime d2 = mailitmType.ReceivedTime;
    if ((d1 - d2).TotalDays > iDays)
    {
    sw.WriteLine("Deleting Mail with Subject line as = \"" + mailitmType.Subject + "\"   and Received time = " + mailitmType.ReceivedTime);
    mailitmType.Delete();
    iCnt = iCnt + 1;
   } //mailitmType.Save();
    }
}
}

我想在以下方面进行改进 -

  • 执行此操作需要将近 5-7 个小时,因为它会读取 15 个文件夹中的每个文件夹中的所有邮件项(如果有 2000 个,其中只有 1000 个大于 15 天),并比较邮件的年龄,然后删除。
  • 由于访问问题,某些文件夹失败。所以我需要在代码的开头添加一个 id,它可以访问所有这些公共文件夹并且可以用来删除。目前,它采用运行可执行文件的默认 ID。
4

1 回答 1

0

永远不要遍历文件夹中的所有项目 - 用于Items.Find/FindNext查询Items.Restrict小于ReceivedTime某个值的属性。

于 2016-10-06T14:01:26.753 回答