从Outlook公用文件夹中删除邮件项目



在几个公共文件夹中,我将删除超过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个小时,因为它读取所有的每个邮件项(如果有2000个,其中只有1000个> 15天)查看15个文件夹,比较邮件的年龄,然后删除。
  • 由于访问问题,一些文件夹失败。所以我需要在代码的开头添加一个id,它可以访问所有这些公共文件夹,并可以用来删除。当前,它采用正在运行可执行文件的默认id。

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

相关内容

  • 没有找到相关文章

最新更新