В настоящее время у меня настроен 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:связь.