从Outlook获取未读邮件

有没有办法将特定文件夹中的所有邮件发送到我的应用程序?

检查此链接 。 Outlook编程简介将更清楚地解释事情。

你可以循环通过邮件项目。 示例代码

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) { } } 

编辑: 引用其他文件夹

 oFolder.Folders["Foldername"] 

OutLook代码

常见的Outlook任务

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

编辑:有一篇知识库文章专门关于从C#访问文件夹, 编程样本可以使用Visual C#.NET引用Outlook中的项目和文件夹

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

循环浏览文件夹中的所有项目是一个糟糕的主意,特别是如果您正在对抗在线Exchange商店。 Items.Find / FindNext或Items.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); } 
  foreach (Object Unreadmail in folderItems) { if ((Unreadmail as Outlook.MailItem) != null && (Unreadmail as Outlook.MailItem).UnRead == true) { //DO Your action Here } } 

我遇到过上述解决方案的“COM_object”exception错误,更多信息请参考这里