从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错误,更多信息请参考这里