簡體   English   中英

處理未讀郵件時出現問題,並在處理后將其標記為已讀

[英]Issue in processing Unread mails and mark it as read after processing

我正在編寫代碼以訪問Outlook並逐一處理未讀郵件並將其標記為已讀(因此它將不會在同一封郵件上運行)。

問題是它無法讀取所有未讀郵件。 (例如)假設我在收件箱中有10封郵件,但僅適用於5封郵件。 它僅處理一半的郵件計數。

標記為已讀后,計數減少,但是forloop不會為所有未讀郵件進行迭代,從而跳過郵件

我這樣寫:

Outlook.Application outlookApp = new Outlook.Application();

        Outlook._NameSpace oNS;
        Outlook.MAPIFolder oFolder;
        Outlook._Explorer oExp;

        outlookApp = new Outlook.Application();
        oNS = (Outlook._NameSpace)outlookApp.GetNamespace("MAPI");
        oFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
        oExp = oFolder.GetExplorer(false);
        oNS.Logon(Missing.Value, Missing.Value, false, true);

        Outlook.Items items = oFolder.Items.Restrict("[Unread]=true");

        int mailcount = items.Count;

        foreach (Microsoft.Office.Interop.Outlook.MailItem mailItem in oFolder.Items)
        {
            if (mailItem.UnRead) // I only process the mail if unread
            {
                Console.WriteLine("Accounts: {0}", mailItem.Subject);
                mailItem.UnRead = false;                   
            }
        }

我是否有任何遺漏?您能幫忙嗎?

每次將一項標記為已讀時,“項”集合都會受到影響(減少),這就是問題所在。

OutLook.Application oApp;
OutLook._NameSpace oNS;
OutLook.MAPIFolder oFolder;
OutLook._Explorer oExp;

oApp = new OutLook.Application();
oNS = (OutLook._NameSpace)oApp.GetNamespace("MAPI");
oFolder = oNS.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderInbox);
oExp = oFolder.GetExplorer(false);
oNS.Logon(Missing.Value, Missing.Value, false, true);

OutLook.Items items = oFolder.Items.Restrict("[Unread]=true");

// Switched to for, https://stackoverflow.com/questions/4317850/do-i-need-to-release-the-com-object-on-every-foreach-iteration#4317878
for (int i = items.Count; i >= 1; i--)
{
     var mail = items[i];

     if (mail.UnRead)
     {
          mail.UnRead = false;
          mail.Save();
     }

     Marshal.ReleaseComObject(mail);
 }

 Marshal.ReleaseComObject(items);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM