Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法知道Outlook 2010是否有带有C的新电子邮件_C#_.net_Outlook 2010 - Fatal编程技术网

C# 有没有办法知道Outlook 2010是否有带有C的新电子邮件

C# 有没有办法知道Outlook 2010是否有带有C的新电子邮件,c#,.net,outlook-2010,C#,.net,Outlook 2010,我很好奇.NET是否能做到这一点。我写了一个小的C Windows GUI应用程序,我想知道是否有任何方法可以进入Microsoft Outlook 2010并检查它是否有任何新的未打开的电子邮件?通常情况下,系统托盘上的信封图标会指示这种情况: 希望这有助于 以下演示如何使用.NET从收件箱文件夹下名为MySubFolderName的Outlook文件夹中的项目检索数据: 首先添加对项目中Outlook COM对象的引用: 在VS.NET中,右键单击引用并选择添加引用。 选择COM选项卡 选择

我很好奇.NET是否能做到这一点。我写了一个小的C Windows GUI应用程序,我想知道是否有任何方法可以进入Microsoft Outlook 2010并检查它是否有任何新的未打开的电子邮件?通常情况下,系统托盘上的信封图标会指示这种情况:

希望这有助于

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

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

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

代码如下:

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;
}
来源@

同时检查:

希望这有助于

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

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

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

代码如下:

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;
}
来源@

同时检查:


您是要询问Outlook,还是要接收事件通知?轮询或询问会更好。但是,我还有什么选择?这可能与您想要的非常接近:您想要询问Outlook,还是想要接收事件通知?轮询或询问会更好。但是,我还有什么选择?这可能非常接近您想要的: