从Outlook获取未读邮件

时间:2010-01-13 10:03:37

标签: c# .net outlook

有没有办法让特定文件夹中的所有邮件进入我的应用程序?

4 个答案:

答案 0 :(得分:13)

检查linkIntroduction to Outlook Programming会更清楚地解释事情。

你可以循环浏览邮件。示例代码

using System.Runtime.InteropServices;
using OutLook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;

    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;
        foreach (OutLook.MailItem mail in items)
                        {

                            if (mail.UnRead == true)
                            {
                        }
        }

编辑: Reference other folders

oFolder.Folders["Foldername"]

OutLook Code

Common Outlook tasks

答案 1 :(得分:4)

循环浏览文件夹中的所有项目是一个糟糕的主意,特别是如果您正在使用在线Exchange商店。 Items.Find/FindNextItems.Restrict是可行的方法。

查找/ FindNext中:

OutLook.Items items = oFolder.Items;
OutLook.MailItem mail = items.Find("[Unread] = true");
while (mail != null)
{
  MessageBox.Show(mail.Subject);
  mail = items.FindNext();
}

Items.Restrict:

OutLook.Items items = oFolder.Items.Restict("[Unread] = true")
foreach (OutLook.MailItem mail in items)
{
  MessageBox.Show(mail.Subject);
}

答案 2 :(得分:2)

有一些访问Outlook文件夹here的示例,其中一个专门处理未读邮件。

编辑:有一篇专门关于从C#,Programming samples that can reference items and folders in Outlook by using Visual C# .NET

访问文件夹的知识库文章

要打开其他用户的文件夹,请使用GetSharedDefaultFolder

答案 3 :(得分:0)

./foo.py

我经历过" COM_object"上述解决方案的异常错误,更多信息请参阅here