有没有办法将特定文件夹中的所有邮件获取到我的应用程序中?
请查看这个链接。 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"]
遍历文件夹中所有项目是一个糟糕的想法,特别是当你在与在线Exchange存储进行交互时。使用Items.Find/FindNext
或者Items.Restrict
是正确的方法。
Find/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);
}
这里有一些访问Outlook文件夹的例子在这里, 其中一个特别涉及未读邮件。
编辑:有一篇KB文章专门介绍从C#访问文件夹,使用Visual C#.NET可以引用Outlook中的项目和文件夹的编程示例
要打开另一个用户的文件夹,请使用GetSharedDefaultFolder
foreach (Object Unreadmail in folderItems)
{
if ((Unreadmail as Outlook.MailItem) != null && (Unreadmail as Outlook.MailItem).UnRead == true)
{
//DO Your action Here
}
}
我在使用以上解决方案时遇到了“COM_object”异常错误,请参考此处获取更多信息。