Torna as regras de execução do Outlook em pastas que não são de caixa de entrada automaticamente

1

Atualmente, tenho minha configuração do Outlook com o Gmail. Eu tenho algumas regras que defini que são executadas em pastas diferentes (lables) na minha conta. Eu tenho filtros já 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 email, nessas pastas, minhas regras não são executadas (elas são apenas para definir categorias). Eu tenho que executá-los manualmente. Eu acho que é porque os e-mails não chegam primeiro na caixa de entrada, mas diretamente na pasta. Existe alguma maneira de tornar as regras de execução do Outlook automaticamente nessas pastas? Uma execução agendada também deve estar bem.

    
por tHeSiD 23.12.2010 / 17:11

3 respostas

1

Aqui está. Observe que isso é específico da pasta Junk (olFolderJunk é uma constante do Outlook) e executará qualquer filtro que eu criar prefixado com "JUNK_FILTER _".

É otimista e praticamente não tem verificação de erros, portanto, use-o a seu próprio risco. Não use se você não entender:)

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
    
por 30.12.2010 / 17:02
1

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

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

Como as categorias podem ser atribuídas (com regras do lado do cliente) em emails que já foram classificados em pastas em um servidor Exchange (usando regras do lado do servidor), eu acho que suas regras são não funciona porque as categorias não pretendem usar em contas que não sejam do Exchange.

Eu não acho que o GMail possa ser usado satisfatoriamente com qualquer cliente de e-mail de desktop, na minha opinião, devido à maneira incomum como as caixas de correio IMAP estão configuradas.

    
por 27.12.2010 / 18:20
0

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 seu calendário e é improvável que seja acionado quando você quiser. Eu não fiz isso pessoalmente, mas tenho certeza que é possível.

O que eu tenho feito é criar uma macro que execute todos os 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, 'delete'). É adaptável por alguém que conhece o 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 o clima me atinge.

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

    
por 29.12.2010 / 22:50