让 Outlook 自动对非收件箱文件夹运行规则

让 Outlook 自动对非收件箱文件夹运行规则

我目前已将 Outlook 与 Gmail 配合使用。我定义了几条规则,这些规则在我的帐户中的不同文件夹(标签)上运行。我已经在 GMail 中设置了过滤器,这些过滤器会使电子邮件跳过收件箱并将它们放入相应的文件夹中。

每当我收到新邮件时,这些文件夹中的规则都不会运行(它们只是用于设置类别)。我必须手动运行它们。我认为这是因为电子邮件不会先进入收件箱,而是直接进入文件夹。有没有办法让 Outlook 自动在这些文件夹中运行规则?计划运行也应该没问题。

答案1

就在这里。请注意,这是特定于垃圾文件夹的(olFolderJunk 是 Outlook 常量),它将运行我创建的任何以“JUNK_FILTER_”为前缀的过滤器。

它过于乐观,几乎没有错误检查,因此使用它需要您自担风险。如果您不理解它,请不要使用它 :)

Sub runRulesOnJunkFolder()
    Dim st As Outlook.Store
    Dim myRules As Outlook.Rules
    Dim rl As Outlook.Rule
    Dim count As Integer
    Dim ruleList As String
    Dim rulePrefix As String
    Dim ruleFolder As Long

    '
    Dim outlookApp As Outlook.Application
    Dim objNS As NameSpace


    ruleFolder = olFolderJunk
    rulePrefix = "JUNK_FILTER_"

    Set objNS = Application.GetNamespace("MAPI")
    Set objJunkfolder = objNS.GetDefaultFolder(ruleFolder)

    ' get default store (where rules live)
    Set st = Application.Session.DefaultStore
    ' get rules
    Set myRules = st.GetRules

    ' iterate all the rules
    For Each rl In myRules
        ' determine if it's an Inbox rule and rule name prefix matches
        If rl.RuleType = olRuleReceive And Left(rl.Name, Len(rulePrefix)) = rulePrefix Then

            ' if so, run it
            rl.Execute ShowProgress:=True, Folder:=objJunkfolder
            count = count + 1
            ruleList = ruleList & vbCrLf & rl.Name
        End If
    Next

    ' tell the user what you did
    ruleList = "These rules were executed against the folder: " & objJunkfolder.Name & vbCrLf & ruleList
    MsgBox ruleList, vbInformation, "Macro: runRulesOnJunkFolder"

    Set rl = Nothing
    Set st = Nothing
    Set myRules = Nothing
    Set objJunkfolder = Nothing
    Set objNS = Nothing
End Sub

答案2

类别在 IMAP 帐户上无法正常工作。分配给 IMAP 帐户中 Outlook 对象的任何类别都不会与服务器同步,因此只会显示在特定 Windows 安装上特定用户帐户的特定 Outlook 配置文件中。您真正可以在 IMAP 和 Outlook 中使用的只有标准开/关标志(而不是 GMail 或 Exchange 支持的不同类型)。

类别旨在与 Exchange 帐户一起使用,可以使用客户端规则分配类别,然后与服务器同步。它们也适用于 POP3 帐户,可以分配类别并按客户端规则对电子邮件进行排序。

作为类别被分配(使用客户端规则)到已经分类到 Exchange 服务器上的文件夹(使用服务器端规则)的电子邮件上,我认为您的规则不起作用,因为类别实际上并不打算在非 Exchange 帐户上使用。

在我看来,由于 IMAP 邮箱的设置方式不寻常,所以我认为 GMail 无法与任何桌面电子邮件客户端一起令人满意地使用。

答案3

一种方法是设置一个定期约会,当提醒弹出时,它可以触发一个宏。宏将运行过滤器。如果你的日历中有很多约会,这似乎有点麻烦,而且不太可能在你想要的时候触发。我个人没有这样做过,但我相信这是可能的。

完成的是创建一个宏,该宏在特定文件夹上运行任何以特定前缀命名的过滤器。宏选择文件夹,过滤器决定操作(在我的情况下是“删除”)。了解 VBA 的人可以适应它。

创建宏后,我在 Outlook 工具栏上添加了一个运行该宏的按钮。每当我想的时候,我就会点击这个按钮。

如果您觉得可以修改它以满足您的需要,我可以发布源代码。

答案4

您可以直接在 GMail 中设置这些规则:关联

相关内容