使用C#监听Outlook特定新邮件。

这个月开始要上夜班,由于做事是on email的,所以部门以前的做法是,隔一段时间起床刷一下邮件。我受不了,所以做了个工具,用来监听outlook的新邮件,并做声音提示。

其实关键代码没有几行,难度在于这些函数在MSDN里基本找不到。术语上叫做基于Office的Add-in的开发。
但是这里我并没有实现成插件,只是截获了Outlook的NewMailEx事件,然后通过回调函数做判断。

核心代码如下:

public void _tMonitorOutLook()
{
ApplicationClass outLookApp = new ApplicationClass();
outLookApp.NewMailEx += new ApplicationEvents_11_NewMailExEventHandler(outLookApp_NewMailEx);
MessageBox.Show(“开始监听Outlook邮件!”);
while (true)
{
Thread.Sleep(10);
}
}

private static void outLookApp_NewMailEx(string EntryIDCollection)
{
ApplicationClass outLookApp = new ApplicationClass();
NameSpace outLookNS = outLookApp.GetNamespace(“MAPI”);
MAPIFolder outLookFolder = outLookNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
string storeID = outLookFolder.StoreID;

MailItem mail = (MailItem)outLookNS.GetItemFromID(EntryIDCollection, storeID);

//判断标题
Regex rx = new Regex(s_strRegex);
if (rx.IsMatch(mail.Subject))
NewPspCaseArrived(“有新邮件到达:” + mail.Subject);

}

原理如下:
1·修改NewMailEx的回调函数,指向我们自己的函数
2·NewMailEx会传递一个EntryID过来,作为参数1,我们再获得收件箱的StoreID,作为参数2,然后调用GetItemFromID,就可以获得新邮件的实例
3·接下来就可以做自己想做的事情了

我的工具截图如下:

如果你感兴趣,可以从以下链接下载:
点我下载

当然,如果你使用的是Outlook,而且你还会写一点正则表达式,那么你也可以使用这个工具监听你的邮件了。只要你把监听文件夹改成一个不想关的文件夹就可以了。不过别忘了,需要.Net Framework 2.0(+)。

《使用C#监听Outlook特定新邮件。》上有2条评论

  1. PSP? 什么时候跑索尼了?话说你那个验证吗越来越不清楚了。
    [reply=colordancer,2009-05-12 08:01 PM]不是索尼。。[/reply]

  2. 最近也开始玩.net了啊~~
    [reply=colordancer,2009-05-14 06:49 PM]大二就开始了啊。不过一直比较低调。。[/reply]

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注