从Outlook删除Item时必须从后往前删
我在用代码删除大量邮件的时候发现:往往删掉几十封邮件后程序就自动停下来了。经过大量的搜索和在论坛中的提问,现在终于找到解决方法了:必须从后往前删!
我用一下代码成功地在不间断的情况下删除了3700多份邮件。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Office.Tools.Ribbon; using Outlook = Microsoft.Office.Interop.Outlook; using System.Diagnostics; using System.Threading; namespace MyThread { public partial class Ribbon1 { private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { } private void button1_Click(object sender, RibbonControlEventArgs e) { Outlook.Application objApplication = Globals.ThisAddIn.Application; Outlook.NameSpace objNameSpace = objApplication.Session; Outlook.MAPIFolder objInbox = objNameSpace .Stores["**********"].GetRootFolder() .Folders["******"]; int c = objInbox.Items.Count; for (int i = c ; i > 0; i--) { var obj = objInbox.Items[i]; if (obj is Outlook.MailItem) { Outlook.MailItem objMailItem = (Outlook.MailItem)obj; objMailItem.Delete(); Debug.Print(i.ToString()); Thread.Sleep(500); } } } } }
征诛志异,三让两家王朝;功同开辟,一桮万古江南。