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

次の領域を改善したい -

  • 15 個のフォルダのそれぞれにあるすべてのメールアイテム (2000 個のメールアイテムのうち 1000 個だけが 15 日以上ある場合) を読み取り、メールの経過時間を比較してから削除するため、これを実行するにはほぼ 5 ~ 7 時間かかります。
  • アクセスの問題により、一部のフォルダーが失敗します。したがって、コードの先頭に、これらすべてのパブリック フォルダーにアクセスでき、削除に使用できる ID を追加する必要があります。現在、実行可能ファイルを実行しているデフォルトの ID を取ります。
4

1 に答える 1

0

フォルダ内のすべてのアイテムをループ処理しない -プロパティに対するクエリで を使用して、Items.Find/FindNext値より小さい値を指定します。Items.RestrictReceivedTime

于 2016-10-06T14:01:26.753 に答える