微软出的东西总会有一些脑残的设计。Outlook的邮件过滤规则,我倒腾了半天都没整明白。最终决定用VBA脚本来实现邮件过滤。 使用VBA处理新邮件,一般有三种方式,各有利弊: 在邮件规则中调用VBA脚本 如果一次收取大量的邮件,可能会漏处理一些邮件。 可能会出现VbaProject.otm被损坏的情况。(TMD我就遇到了) 使用ItemAdd事件 当同时进入文件夹的邮件超过16个时,ItemAdd事件将不会被触发。致命啊~~ 使用NewMailEx事件 只有使用Exchange邮箱才能触发NewMailEx事件,只有Outlook处于启动状态时才能接收NewMailEx邮件。也就是说,当Outlook关闭后收到一些新邮件,再次打开Outlook收取这些邮件时,将不会触发NewMailEx事件。也很恶心啊~~ 所以,基本上就只有第一种方法比较符合我的要求。 我的需求,简化一下就是: 从a@example.com发送过来的邮件,移动到folder1 发送给b@example.com邮件组的邮件,移动到folder2 发送给c@exmpla.com邮件组的邮件,移动到folder3 OK,启动Outlook,按ALT+F11进入VBA编辑器,在ThisOutlookSession模块下,添加如下的函数: Sub EmailFilter(item As MailItem) ‘ 声明变量,好处是编辑器知道变量类型之后可以进行自动提示。 Dim id As String Dim email As Outlook.MailItem Dim objApp As Outlook.Application Dim objNS As Outlook.NameSpace Dim inbox, folderA, folderB, folderC As Outlook.Folder ‘ 取得收件夹和下面的三个子目录 Set objApp = Application Set objNS = objApp.GetNamespace("MAPI") Set [...]
-
Recent Posts
-
Categories
-
Archives
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007