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);
}
}
}
}

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

05-11 22:26