讓 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 伺服器上的資料夾(使用伺服器端規則)的電子郵件上,我認為您的規則不起作用,因為類別並不真正打算用於非- 交換帳戶。

在我看來,我認為 GMail 不能與任何桌面電子郵件用戶端一起令人滿意地使用,因為 IMAP 郵箱的設定方式不尋常。

答案3

一種方法是設定一個定期約會,每當提醒彈出時就可以觸發巨集。巨集將運行過濾器。這看起來有點麻煩,因為你的日曆中有很多約會,而且當你想要它時它不太可能被解僱。我個人沒有這樣做過,但我確信這是可能的。

我什麼完成的工作是建立一個宏,運行在特定資料夾上以特定前綴命名的任何過濾器。巨集選擇資料夾,過濾器決定操作(在我的例子中,“刪除”)。了解 VBA 的人都可以使用它。

建立巨集後,我在 Outlook 工具列上新增了一個執行它的按鈕。每當我有心情時,我都會點擊按鈕。

如果您覺得可以修改它以滿足您的需要,我可以發布原始程式碼。

答案4

您可以直接在 GMail 中設定這些規則:關聯

相關內容