いくつかのパブリック フォルダのうち、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 を取ります。