Faça com que o Outlook execute regras em pastas que não sejam da caixa de entrada automaticamente

Faça com que o Outlook execute regras em pastas que não sejam da caixa de entrada automaticamente

Atualmente tenho meu Outlook configurado com Gmail. Eu tenho algumas regras que defini e que são executadas em diferentes pastas (etiquetas) da minha conta. Já tenho filtros configurados no GMail que farão com que os e-mails pulem a caixa de entrada e os coloquem nas respectivas pastas.

Sempre que recebo um novo e-mail, nessas pastas, minhas regras não são executadas (são apenas para definir categorias). Eu tenho que executá-los manualmente. Acho que é porque os e-mails não chegam primeiro à caixa de entrada, mas diretamente à pasta. Existe alguma maneira de fazer com que o Outlook execute regras automaticamente nessas pastas? Uma execução programada também deve servir.

Responder1

Aqui está. Observe que isso é específico para a pasta Lixo Eletrônico (olFolderJunk é uma constante do Outlook) e executará qualquer filtro que eu criar com o prefixo "JUNK_FILTER_".

Ele é otimista e praticamente não possui verificação de erros, portanto, use-o por sua conta e risco. Não use se você não entende :)

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

Responder2

As categorias não funcionam corretamente em contas IMAP. Quaisquer categorias atribuídas a objetos do Outlook em contas IMAP não serão sincronizadas com o servidor, portanto, aparecerão apenas nesse perfil específico do Outlook, nessa conta de usuário específica, naquela instalação específica do Windows. A única coisa que você realmente pode usar com IMAP e Outlook são os sinalizadores padrão de ativação/desativação (não os diferentes tipos suportados pelo GMail ou Exchange).

As categorias devem ser usadas com contas do Exchange, onde podem ser atribuídas regras do lado do cliente e depois sincronizadas com o servidor. Eles também funcionarão bem com contas POP3, onde as categorias seriam atribuídas e os e-mails classificados por regras do lado do cliente.

Como categoriaspodeser atribuído (com regras do lado do cliente) em e-mails que já foram classificados em pastas em um servidor Exchange (usando regras do lado do servidor), eu pensaria que suas regras não estão funcionando porque as categorias não foram realmente destinadas a serem usadas em não -Trocar contas.

Não creio que o GMail possa ser usado satisfatoriamente com qualquer cliente de e-mail de desktop, na minha opinião, devido à forma incomum como as caixas de correio IMAP são configuradas.

Responder3

Uma maneira de fazer isso é configurar um compromisso recorrente que pode disparar uma macro sempre que o lembrete aparecer. A macro executaria o filtro. Isso parece um pouco complicado com muitos compromissos em sua agenda e é improvável que seja demitido quando você quiser. Não fiz isso pessoalmente, mas tenho certeza de que é possível.

O que euterfeito é criar uma macro que execute quaisquer filtros nomeados com um prefixo específico em uma pasta específica. A macro escolhe a pasta, os filtros decidem a ação (no meu caso, 'excluir'). É adaptável por quem conhece VBA.

Depois de criar a macro, adicionei um botão na barra de ferramentas do Outlook que a executa. Clico no botão sempre que tenho vontade.

Posso postar o código-fonte se você achar que pode modificá-lo para atender às suas necessidades.

Responder4

Você pode definir essas regras diretamente no GMail:link.

informação relacionada