使用默认电子邮件规则无法实现某些功能,例如使用通配符搜索主题或邮件正文。您可以输入多个单词,但如果您需要的单词彼此相隔一个字符,情况就不一样了。我如何编写自己的 Visual Basic for Applications 代码来过滤 Outlook 电子邮件?
答案1
我到处寻找实现这个简单过滤器所需的所有部件。相比之下,Unix procmail 过滤器非常容易使用。所有 Microsoft Outlook 向导都妨碍了使用通配符的简单过滤器。虽然 Microsoft 默认提供的许多电子邮件过滤条件都很有用,但没有什么能胜过运行代码的灵活性和自定义性。
- 编写你的代码。
Alt-F11 调出 VBA 代码编辑器。双击 ThisOutlookSession。编写代码。在我的例子中,它在主题行上使用正则表达式,并将其移动到子文件夹中的我自己的 pst 而不是 DefaultFolder。
Sub filter(Item As Outlook.MailItem)
Dim ns As Outlook.NameSpace
Dim MailDest As Outlook.Folder
Set ns = Application.GetNamespace("MAPI")
Set Reg1 = CreateObject("VBScript.RegExp")
Reg1.Global = True
Reg1.Pattern = "(.*Abc.20.*)"
If Reg1.Test(Item.Subject) Then
Set MailDest = ns.Folders("Personal Folders").Folders("one").Folders("a")
Item.Move MailDest
End If
End Sub
- 根据规则对每封收到的电子邮件运行代码。
在规则下选择“管理规则和警报...”。新规则将如下所示
Apply this rule after the message arrives run Project1.ThisOutlookSession.filter
要获得此信息,对于步骤 1:选择条件:只需单击下一步。单击确定确认它适用于所有消息。对于选择操作,选中“运行脚本”,然后单击选择过滤脚本并选择下一步或完成。对于选择例外,单击下一步或完成。给它起一个好名字,如 vba-filter,然后选中启用此规则。单击完成。由于它适用于本地文件夹,因此当它要求确认此规则不适用于您在线或从其他设备查看的电子邮件时,请单击确定。单击“规则和警报”对话框中的“确定”。
- Outlook 不喜欢未签名的宏。要自行签名宏创建证书并使用它。