New*_*ikh 3 c# outlook office-interop outlook-2010
我编写了一个代码,可以从Outlook 2010中读取所有未读邮件并将其写入文件中.之后我想改变邮件的状态为Read in outlook.
我该怎么做?
我正在使用Interop访问邮件.
Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.MailItem item = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.Items unreadItems = null;
app = new Microsoft.Office.Interop.Outlook.Application();//.CreateItem(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
ns = app.GetNamespace("MAPI");
inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
unreadItems = inboxFolder.Items.Restrict("[Unread]=true");
Run Code Online (Sandbox Code Playgroud)
以下是一些可以帮助您的链接:
我有一个可以帮助您的代码示例:
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)
{
mail.UnRead = false;
mail.Save();
}
Marshal.ReleaseCOMObject(mail);
}
Marshal.ReleaseCOMObject(items);
// Dont forget to free all other object, using Marshal.ReleaseCOMObject then close oApp
Run Code Online (Sandbox Code Playgroud)
请注意我没有测试它是否有效甚至编译.
关于outlook dev的一般规则是你需要释放所有com对象,否则你可能会有奇怪的行为(关闭outlook app时保存弹出窗口,甚至看不到前景等等)
编辑:我建议你确实使用Restrict方法只获得unred邮件,因为我上面的代码片段将循环所有电子邮件,这可能是不必要的,而不是高性能.
归档时间: |
|
查看次数: |
7491 次 |
最近记录: |