У меня в настоящее время есть своя установка Outlook с Gmail. У меня есть несколько правил, что я определил, которые работают на различных папках (маркировки) в моей учетной записи. У меня есть фильтры, уже устанавливают в Gmail, который заставит электронные письма пропустить ящик входящих сообщений и поместить их в соответствующие папки.
Каждый раз, когда я получаю новое электронное письмо в тех папках, мои правила не выполняются (они только для установки категорий). Я должен выполнить их вручную. Я думаю, потому что электронные письма не прибывают в ящик входящих сообщений сначала, но непосредственно в папку. Там должен так или иначе сделать перспективу выполненными правилами автоматически о тех папках? Запланированное выполнение должно также быть прекрасным.
Вот. Обратите внимание, что это характерно для папки Junk (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
Категории не работают над учетными записями IMAP правильно. Любые категории, присвоенные объектам Outlook в учетных записях IMAP, не будут синхронизировать с сервером, так только обнаружится на том конкретном профиле Outlook на той конкретной учетной записи пользователя на той конкретной установке Windows. Единственной вещью, которую можно действительно использовать с IMAP и Outlook, являются стандартные флаги включения - выключения (не различные типы что Gmail или поддержки Exchange).
Категории предназначаются, чтобы использоваться с учетными записями Exchange, где им можно присвоить с клиентскими правилами и затем синхронизировать с сервером. Они будут также хорошо работать с учетными записями POP3, где категории были бы присвоены и электронные письма, отсортированные по клиентским правилам.
Поскольку категории могут быть присвоены (с клиентскими правилами) на электронных письмах, которые были уже отсортированы в папки на Exchange Server (использующий правила серверной стороны), я буду думать, что Ваши правила не работают, потому что категории действительно не предназначаются для использования на учетных записях не-Exchange.
Я не думаю, что Gmail может использоваться удовлетворительно с любым настольным почтовым клиентом, по-моему, из-за необычного способа, которым настраиваются почтовые ящики IMAP.
Один способ сделать это должно настроить повторяющееся назначение, которое может запустить макрос каждый раз, когда напоминание открывается. Макрос выполнил бы фильтр. Это кажется немного громоздким с большим количеством назначений в Вашем календаре, и он вряд ли будет запущен, когда Вы захотите его к. Я не сделал этого лично, но я уверен, что это возможно.
То, что я сделал, делают макрос, который выполняет любые фильтры, которые называют с определенным префиксом на определенной папке. Макрос выбирает папку, фильтры решают действие (в моем случае, 'удалите'). Это адаптируемо кем-то, кто знает VBA.
После того, как я создал макрос, я добавил кнопку на панели инструментов перспективы, которая выполняет его. Я нажимаю кнопку каждый раз, когда настроение ударяет меня.
Я могу отправить исходный код, если Вы чувствуете, что можно изменить его для удовлетворения потребностям.