监听outlook新邮件

时间:2022-08-31 20:52:01
监听outlook新邮件
监听outlook新邮件
using System;
using System.Linq;
using Microsoft.Office.Interop.Outlook;
using System.Collections.Generic;

namespace EmailReceiver
{
class Program
{
static ApplicationClass outlookApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();
static NameSpace ns;
static void Main(string[] args)
{
Console.WriteLine(
"start to monitor new emails");
ns
= outlookApp.GetNamespace("MAPI");
outlookApp.NewMailEx
+= new ApplicationEvents_11_NewMailExEventHandler(outlookApp_NewMailEx);
outlookApp.NewMail
+= new ApplicationEvents_11_NewMailEventHandler(outlookApp_NewMail);
while (true)
{

}
}

static void outlookApp_NewMail()
{
Console.WriteLine(
"a new message comes: new email");
}

static void outlookApp_NewMailEx(string EntryIDCollection)
{
Console.WriteLine(
"a new message comes");
AnalyzeNewItem(EntryIDCollection);
}

private static void AnalyzeNewItem(string entry)
{
var inbox = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
List
<MailItem> allmails = new List<MailItem>();
foreach (var item in inbox.Items)
{
if (item is MailItem)
{
var mail = item as MailItem;
allmails.Add(mail);
}
}
var latest = allmails.Max(s => s.ReceivedTime);
var latestMailItem = allmails.FirstOrDefault(s => s.ReceivedTime == latest);
if (latestMailItem != null)
{
Console.WriteLine(latestMailItem.Subject);
Console.WriteLine(latestMailItem.To);
Console.WriteLine(latestMailItem.SenderName);
Console.WriteLine(latestMailItem.ReceivedTime);
Console.WriteLine(latestMailItem.Body);
}
}
}
}
监听outlook新邮件

如果出现如下错误:Interop type 'Microsoft.Office.Interop.Outlook.ApplicationClass' cannot be embedded. Use the applicable interface instead.
把DLL中的“Embed Interop Type”值置为“False”即可。

监听outlook新邮件

分类: .NET, C#
0
0
«上一篇: 生成API文档的软件
»下一篇: [Silverlight]调用外部可执行程序
posted @ 2013-06-25 13:30 allanli 阅读( 614) 评论( 0) 编辑 收藏