这个月开始要上夜班,由于做事是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(+)。
PSP? 什么时候跑索尼了?话说你那个验证吗越来越不清楚了。
[reply=colordancer,2009-05-12 08:01 PM]不是索尼。。[/reply]
最近也开始玩.net了啊~~
[reply=colordancer,2009-05-14 06:49 PM]大二就开始了啊。不过一直比较低调。。[/reply]