【问题标题】:Is there any way to know if Outlook 2010 has new email with C#有没有办法知道 Outlook 2010 是否有 C# 的新电子邮件
【发布时间】:2013-05-25 07:19:19
【问题描述】:

我很好奇 .NET 是否可以做到这一点。我编写了一个小型 C# Windows GUI 应用程序,我想知道是否有任何方法可以“利用”Microsoft Outlook 2010 并检查它是否存在任何新的(未打开的)电子邮件?通常情况下,系统托盘上会出现一个信封图标来表示这种情况:

【问题讨论】:

  • 您是要询问 Outlook,还是要接收事件通知?
  • 轮询或“审讯”会更好。但是,我还有什么选择?
  • 这可能非常接近你想要的:stackoverflow.com/questions/2055811/…

标签: c# .net outlook-2010


【解决方案1】:

希望这会有所帮助...

以下演示如何使用 .NET 从 Outlook 文件夹(收件箱文件夹下的“MySubFolderName”)中的项目中检索数据:

首先在您的项目中添加对 Outlook COM 对象的引用:

在 VS.NET 中右键单击引用并选择添加引用。 选择 COM 选项卡 选择“Microsoft Outlook 11.0 对象库”(这是针对 MS Office 2003 - 我认为 10.0 是针对 Office XP),然后单击选择。 单击确定。 请注意,您可以访问任何 Outlook/Exchange 对象类型,例如约会、便笺、任务、电子邮件等 - 只需使用智能感知来选择哪一个(例如 Microsoft.Office.Interop.Outlook.... - 请参阅名为“项目”的变量的定义'下面)。

代码如下:

Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.PostItem item = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null;

try 
{
    app = new Microsoft.Office.Interop.Outlook.Application();
    ns = app.GetNamespace("MAPI");
    ns.Logon(null,null,false, false);

    inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
    subFolder = inboxFolder.Folders["MySubFolderName"]; //folder.Folders[1]; also works
    Console.WriteLine("Folder Name: {0}, EntryId: {1}", subFolder.Name, subFolder.EntryID);
    Console.WriteLine("Num Items: {0}", subFolder.Items.Count.ToString());

for(int i=1;i<=subFolder.Items.Count;i++)
{
    item = (Microsoft.Office.Interop.Outlook.PostItem)subFolder.Items[i];
    Console.WriteLine("Item: {0}", i.ToString());
    Console.WriteLine("Subject: {0}", item.Subject); 
    Console.WriteLine("Sent: {0} {1}", item.SentOn.ToLongDateString(), item.SentOn.ToLongTimeString());
    Console.WriteLine("Categories: {0}", item.Categories);
    Console.WriteLine("Body: {0}", item.Body);
    Console.WriteLine("HTMLBody: {0}", item.HTMLBody); 
  }
} 
catch (System.Runtime.InteropServices.COMException ex) 
{
    Console.WriteLine(ex.ToString());
}
finally
{
    ns = null;
    app = null;
    inboxFolder = null;
}

来源@http://geekswithblogs.net/TimH/archive/2006/05/26/79720.aspx

同时检查:

http://msdn.microsoft.com/en-us/library/bb610835(v=office.14).aspx

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 2015-10-21
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多