Заставьте 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 должным образом. Любые категории, назначенные объектам Outlook в учетных записях IMAP, не будут синхронизироваться с сервером, поэтому будут отображаться только в этом конкретном профиле Outlook в этой конкретной учетной записи пользователя в этой конкретной установке Windows. Единственное, что вы действительно можете использовать с IMAP и Outlook, — это стандартные флаги включения/выключения (а не различные типы, которые поддерживают GMail или Exchange).

Категории предназначены для использования с учетными записями Exchange, где они могут быть назначены с помощью правил на стороне клиента, а затем синхронизированы с сервером. Они также будут отлично работать с учетными записями POP3, где категории будут назначены, а письма будут сортироваться по правилам на стороне клиента.

Как категорииможетбыть назначены (с помощью правил на стороне клиента) для писем, которые уже были отсортированы по папкам на сервере Exchange (с помощью правил на стороне сервера), я думаю, что ваши правила не работают, поскольку категории на самом деле не предназначены для использования в учетных записях, не являющихся учетными записями Exchange.

По моему мнению, GMail невозможно удовлетворительно использовать с любым почтовым клиентом для настольного компьютера из-за необычного способа настройки почтовых ящиков IMAP.

решение3

Один из способов сделать это — настроить повторяющуюся встречу, которая может запускать макрос всякий раз, когда всплывает напоминание. Макрос будет запускать фильтр. Это кажется немного громоздким, если в вашем календаре много встреч, и вряд ли он запустится, когда вы этого хотите. Я не делал этого лично, но я уверен, что это возможно.

Что яиметьdone - сделать макрос, который запускает любые фильтры, которые названы с определенным префиксом в определенной папке. Макрос выбирает папку, фильтры определяют действие (в моем случае, 'удалить'). Он адаптируется тем, кто знает VBA.

После того, как я создал макрос, я добавил кнопку на панель инструментов Outlook, которая его запускает. Я нажимаю кнопку, когда у меня появляется настроение.

Я могу опубликовать исходный код, если вы считаете, что сможете изменить его в соответствии со своими потребностями.

решение4

Вы можете установить эти правила непосредственно в GMail:связь.

Связанный контент