Faire en sorte que Outlook exécute automatiquement les règles sur les dossiers ne provenant pas de la boîte de réception

1

J'ai actuellement ma configuration Outlook avec Gmail. J'ai défini quelques règles qui s'exécutent sur différents dossiers (lables) de mon compte. J'ai déjà des filtres configurés dans GMail qui feront en sorte que les courriels ignorent la boîte de réception et les placent dans les dossiers respectifs.

Chaque fois que je reçois un nouvel e-mail, dans ces dossiers, mes règles ne sont pas exécutées (elles servent uniquement à définir des catégories). Je dois les exécuter manuellement. Je pense que c’est parce que les courriels ne viennent pas dans la boîte de réception d’abord, mais directement dans le dossier. Est-il possible de faire en sorte que Outlook exécute automatiquement des règles sur ces dossiers? Une exécution programmée devrait également convenir.

tHeSiD
la source

Réponses:

1

C'est ici. Notez que ceci est spécifique au dossier de courrier indésirable (olFolderJunk est une constante d'Outlook) et qu'il exécutera tous les filtres que je crée avec le préfixe "JUNK_FILTER_".

Il est optimiste et ne contient pratiquement aucune erreur, alors utilisez-le à vos risques et périls. Ne l'utilisez pas si vous ne le comprenez pas :)

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
horatio
la source
1

Les catégories ne fonctionnent pas correctement sur les comptes IMAP. Toutes les catégories attribuées à des objets Outlook dans des comptes IMAP ne seront pas synchronisées avec le serveur. Elles n'apparaîtront donc que sur ce profil Outlook particulier sur ce compte d'utilisateur particulier sur cette installation Windows particulière. La seule chose que vous pouvez vraiment utiliser avec IMAP et Outlook est un indicateur d'activation / désactivation standard (et non les différents types pris en charge par GMail ou Exchange).

Les catégories sont destinées à être utilisées avec des comptes Exchange, où elles peuvent être attribuées avec des règles côté client, puis synchronisées avec le serveur. Ils fonctionneront également correctement avec les comptes POP3, dans lesquels les catégories seraient attribuées et les e-mails triés selon les règles côté client.

En tant que catégories pouvez être assigné (avec des règles côté client) sur des emails qui ont déjà été triés dans des dossiers sur un serveur Exchange (en utilisant des règles côté serveur), je penserais que vos règles ne fonctionnent pas car les catégories ne sont pas vraiment destinées à être utilisées sur des non-utilisateurs. -Les comptes d'échange.

Je ne pense pas que GMail puisse être utilisé de manière satisfaisante avec un client de messagerie de bureau, à mon avis, en raison de la manière inhabituelle de configurer les boîtes aux lettres IMAP.

paradroid
la source
0

Une façon de procéder consiste à configurer un rendez-vous périodique qui peut déclencher une macro à chaque fois que le rappel apparaît. La macro exécuterait le filtre. Cela semble un peu lourd avec beaucoup de rendez-vous dans votre calendrier et il est peu probable qu'il soit renvoyé quand vous le souhaitez. Je ne l'ai pas fait personnellement, mais je suis sûr que c'est possible.

Ce que je avoir done consiste à créer une macro qui exécute tous les filtres nommés avec un préfixe spécifique dans un dossier spécifique. La macro sélectionne le dossier, les filtres décident de l'action (dans mon cas, "supprimer"). Il est adaptable par quelqu'un qui connaît VBA.

Après avoir créé la macro, j'ai ajouté un bouton dans la barre d'outils Outlook qui l'exécute. Je clique sur le bouton chaque fois que l'ambiance me frappe.

Je peux poster du code source si vous estimez pouvoir le modifier pour répondre à vos besoins.

horatio
la source
Pouvez-vous poster le code de la macro? Merci!
tHeSiD