[c#]我为什么不能检索使用互操作 outlook 的所有 MailItems?

发布时间: 2017/2/23 0:52:11
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想使用 Microsoft.Office.Interop.Outlook 从我的 Outlook 收件箱中检索电子邮件。这是我的代码︰

  Application app = new Application();
  NameSpace ns = app.Session;
  MAPIFolder inbox = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
  Items items = inbox.Items;
  foreach (Microsoft.Office.Interop.Outlook.MailItem mail in items)
        {
            if (mail as MailItem != null)
            {
                Console.WriteLine(mail.Subject.ToString());
                Console.WriteLine(mail.Body.ToString());
                Console.ReadKey();
             }
        }

当我这样做时,它工作-排序。它只显示一封电子邮件。应该有 3 个。报告显示,在那里......,我为什么不能能够得到所有三个历史最悠久之一的电子邮件吗?有一些其他类型的邮件会在我的收件箱中的邮件项目除了吗?

解决方法 1:

我有同样的确切问题 — — 我的解决办法是只是为了创建 List<MailItem> 和循环的。 请确保在子文件夹中的电子邮件虽然,否则他们不会被发现不是。

Outlook.Application app = new Outlook.Application();
Outlook.NameSpace outlookNs = app.GetNamespace("MAPI");
Outlook.MAPIFolder emailFolder = outlookNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);

List<MailItem> ReceivedEmail = new List<MailItem>(); 
foreach (Outlook.MailItem mail in emailFolder.Items)               
        { ReceivedEmail.Add(mail); }

foreach (MailItem mail in ReceivedEmail)
{
    //do stuff
}
赞助商