IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Aide pour script ANTISPAM


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Aide pour script ANTISPAM
    Bonjour, j'ai besoin d'aide pour créer un script ANTISPAM qui fonctionne en trois temps :

    1 - SI Adresse expéditeur se trouve dans expéditeurs approuvés, ALORS Déplacer MAIL vers BOITE DE RECEPTION

    2 - SI corps du message contient "des mots spécifiques ( en l' occurrence un code ), ALORS placer adresse expéditeur dans la liste des expéditeurs approuvés ET déplacer vers BOITE DE RECEPTION

    3 - SI adresse expéditeur n'est pas dans la liste expéditeurs approuvés, ET corps du message ne contient pas le code, ALORS envoyer un mail type

    Merci beaucoup pour votre aide car je plane en VBScript !

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonsoir,
    C'est pour quelle version de OUTLOOK ?
    Quelle est la finalité exacte ? utilises tu déjà les fonctions de courrier indésirable de OL (repond a ton 1)?
    Pour gérer le courrier indésirable via VBA il faut installer REDEMPTION

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Bonjour, tout d'abord merci de m'accorder du temps !

    Donc j'ai Outlook 2007.

    La finalité est de gagner du temps dans le tri des mails reçu car le traitement des indésirables de base d ' outlook ne me convient pas !

    Je suis d'accord avec vous, : les fonctions de courrier indésirable de OL (repond a ton 1) mais celà implique que je remplisse la liste au fur et à mesure, tout comme les adresses indésirables et je n'ai pas le temps pour celà.

    Donc au final, pour automatiser le traitement des mails reçus, les deux scripts que je n'arrive pas à faire sont :

    1 - placer adresse expéditeur dans la liste des expéditeurs approuvés

    2 - SI adresse expéditeur n'est pas dans la liste expéditeurs approuvés, ET corps du message ne contient pas le code, ALORS envoyer un mail type

    J'espère avoir répondu à vos question !

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    Voici un code qui doit faire le travail. du moins avec les éléments que j'ai compris.

    il faut installer REDEMPTION
    l'ajout de l'expéditeur ne se voit parfois qu'après avoir relancé outlook, mais il est là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Sub REGLE_JUNK_TEST(StrID As Outlook.MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : REGLE_JUNK_TEST
    ' Author    : OCTU
    ' Date      : 03/06/2015
    ' Purpose   : Place l'expéditeur dans les expediteurs approuvé si le corps du Mail contient un code sinon envoi une réponse
    '---------------------------------------------------------------------------------------
    '
        Dim Mymail As Outlook.MailItem
        Dim Expediteur
        If Not StrID.Class = olMail Then Exit Sub
        Set Mymail = StrID
     
        Expediteur = Get_sender_SMTP(StrID)
        If InStr(1, Mymail.HTMLBody, "#code#", vbTextCompare) > 0 Then
            'ajout de l'expéditeur dans les expediteurs approuves
            Set RDOSession = CreateObject("Redemption.RDOSession")
            RDOSession.MAPIOBJECT = Application.Session.MAPIOBJECT
            Set JunkOptions = RDOSession.JunkEmailOptions
            JunkOptions.TrustedSenders.add Expediteur
            JunkOptions.Save
        Else
            'envoi d'un mail Type
            Dim LaReponse As MailItem
            Set LaReponse = Mymail.Reply
     
            'LaReponse.subject = "ici on modifie le sujet"
     
     
            'Si on veux supprimer la signature
            Select Case LaReponse.BodyFormat
            Case olFormatHTML
                LaReponse.HTMLBody = Mymail.HTMLBody
            Case Else
                LaReponse.Body = Mymail.Body
            End Select
     
     
            MonTexteEnPlus = "This message was created automatically by mail delivery software. <BR>" _
                      & "A message that you sent could not be delivered to one or more of its recipients. <BR>" _
                      & "This is a permanent error. <BR>" _
                      & "SPAM !"
     
     
            Select Case LaReponse.BodyFormat
                'ici on vérifie le format du message HTML OU BRUT ...
     
            Case olFormatHTML:
     
                OuCommenceAdresse = InStr(1, LaReponse.HTMLBody, "<BODY", vbTextCompare)
                If OuCommenceAdresse > 0 Then
                    fin = InStr(OuCommenceAdresse + 5, LaReponse.HTMLBody, ">") + 1
                    BaliseBody = Mid(LaReponse.HTMLBody, OuCommenceAdresse, fin - OuCommenceAdresse)
     
                    LaReponse.HTMLBody = Replace(LaReponse.HTMLBody, BaliseBody, BaliseBody & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & MonTexteEnPlus & "</font><BR>" _
                                                                               & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>", 1, 1, vbTextCompare)
                Else: LaReponse.HTMLBody = "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & liste & _
                                           "</font><BR>" & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>" & LaReponse.HTMLBody
     
                End If
            Case Else
                LaReponse.Body = Replace(MonTexteEnPlus, "<br>", vbCr) & Chr(10) & String(NbTiret, "-") & Chr(10) & Chr(10) & LaReponse.Body
     
            End Select
     
           'commentez/Décommentez la première
             LaReponse.Display
            '    LaReponse.Send
     
        End If
        Set Mymail = Nothing
        Set olNS = Nothing
    fin:
    End Sub
     
    Private Function Get_sender_SMTP(OITEM As Outlook.MailItem) As String
        Dim oEU As Outlook.ExchangeUser
        On Error Resume Next
        Set oEU = OITEM.Sender.GetExchangeUser
     
        Get_sender_SMTP = oEU.PrimarySmtpAddress
        If Get_sender_SMTP = "" Then Get_sender_SMTP = OITEM.SenderEmailAddress
    End Function

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Bonjour Oliv, déjà merci !

    Donc j'ai installé REDEMPTION, mais je sais pas s'il y a une manip à faire pour l'intégrer à Outlook

    Alors j'ai remplacé par et je me suis envoyé un message avec ce code dans le corps du message mais je n'ai pas été placé dans les expéditeurs approuvés, même après redémarrage d'Outlook.

    De plus, serait ce trop te demander de me commenter un peu plus ton code ?

    Merci d'avance.

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    En principe lors du premier lancement tu as du avoir une fenêtre REDEMPTION pour accepter la licence ou un truc du genre ?

    Pour comprendre mieux met un point d'arrêt ou le mot "STOP" en dessous des "DIM" et exécute le code en pas à pas (f8)

    Quelle partie tu ne comprends pas ?

    la partie la plus obscure me semble celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Select Case LaReponse.BodyFormat
                'ici on vérifie le format du message HTML OU BRUT ...
     
            Case olFormatHTML:
     
                OuCommenceAdresse = InStr(1, LaReponse.HTMLBody, "<BODY", vbTextCompare)
                If OuCommenceAdresse > 0 Then
                    fin = InStr(OuCommenceAdresse + 5, LaReponse.HTMLBody, ">") + 1
                    BaliseBody = Mid(LaReponse.HTMLBody, OuCommenceAdresse, fin - OuCommenceAdresse)
     
                    LaReponse.HTMLBody = Replace(LaReponse.HTMLBody, BaliseBody, BaliseBody & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & MonTexteEnPlus & "</font><BR>" _
                                                                               & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>", 1, 1, vbTextCompare)
                Else: LaReponse.HTMLBody = "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & liste & _
                                           "</font><BR>" & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>" & LaReponse.HTMLBody
     
                End If
             Case Else
                LaReponse.Body = Replace(MonTexteEnPlus, "<br>", vbCr) & Chr(10) & String(NbTiret, "-") & Chr(10) & Chr(10) & LaReponse.Body
     
            End Select
    C'est pour ajouter au corps du mail d'origine une réponse et dans le cas d'un mail au format HTML pour respecter ce format on cherche où se trouve la balise "<body" qui indique le début du texte.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Salut Oliv, c'est vrai que cette partie du code est incompréhensible pour moi novice, mais je comprend pas pourquoi lorsque je m'envoi un mail avec le code dans le corps du message, , je ne suiis pas placé dans les expéditeurs approuvés !!!

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Est ce que la macro se déclenche ?

  9. #9
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Je ne pense pas qu'elle se déclenche puisque si je met le code, je ne suis pas ajouté aux exp aprouv et si je le met pas, je ne reçoit pas de mail !

    J'ai copié ton code et je l'ai collé dans ThisOutlookSession mais si je veux exécuter une macro, il n'y a pas de nom de macro, je peux juste en créer une nouvelle.

    Désolé, mais je suis vraiment un débutant, dès que j'aurai un début fonctionnel, je pourrais travailler sur une base, mais là j'avoue que je n'arrive à rien !!!

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour
    La base tu l as il faut copier le code dans un MODULE.
    Et surtout il faut créer une RÈGLE !

  11. #11
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    J'ai du mélanger deux sujets ! je pensais t'avoir déjà parlé des REGLES.

    Enfin ma réponse reste correcte mais tu peux le faire de 2 façons.

    -Soit tu crées une REGLE à l'arrivée d'un nouveau message et tu sélectionnes "EXECUTER UN SCRIPT" tu choisis alors le nom de la macro précédente.

    Soit tu utilises les événements, c'est à dire le déclenchement automatique d'un code lorsque cet événement arrive (ici l'arrivée d'un nouveau message).

    tu mets ce code dans THISOUTLOOKSESSION
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    ---------------------------------------------------------------------------------------
    Procedure:   Application_NewMailEx
    Author:      Oliv-
     Date      : 03/04/2015
     Purpose   : Fait quelque chose à l'arrivée d'un message
    ---------------------------------------------------------------------------------------
     
        Dim objFolderDestination As MAPIFolder
        Dim varEntryIDs
        Dim item
        Dim i As Integer
        Dim objMail As MailItem
        varEntryIDs = Split(EntryIDCollection, ",")
        For i = 0 To UBound(varEntryIDs)
            Set item = Application.Session.GetItemFromID(varEntryIDs(i))
            If Not item.Class = olMail Then GoTo fin
            Set objMail = item
                Call REGLE_JUNK_TEST(objMail)
               ' item.Delete
        Next
    fin:
    End Sub
    Voici un autre code pour tester ta macro en Manuel sur le Mail ouvert.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test_script()
        Dim OITEM As Mailitem
        Set OITEM = ActiveInspector.CurrentItem
        call REGLE_JUNK_TEST (OITEM)
    End Sub

  12. #12
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Bonjour Oliv, bon ça avance, j'ai tout supprimer et suivi tes conseils, j'ai donc copié ce code dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Sub REGLE_JUNK_TEST(StrID As Outlook.MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : REGLE_JUNK_TEST
    ' Author    : OCTU
    ' Date      : 03/06/2015
    ' Purpose   : Place l'expéditeur dans les expediteurs approuvé si le corps du Mail contient un code sinon envoi une réponse
    '---------------------------------------------------------------------------------------
    '
        Dim Mymail As Outlook.MailItem
        Dim Expediteur
        If Not StrID.Class = olMail Then Exit Sub
        Set Mymail = StrID
     
        Expediteur = Get_sender_SMTP(StrID)
        If InStr(1, Mymail.HTMLBody, "#code#", vbTextCompare) > 0 Then
            'ajout de l'expéditeur dans les expediteurs approuves
            Set RDOSession = CreateObject("Redemption.RDOSession")
            RDOSession.MAPIOBJECT = Application.Session.MAPIOBJECT
            Set JunkOptions = RDOSession.JunkEmailOptions
            JunkOptions.TrustedSenders.Add Expediteur
            JunkOptions.Save
        Else
            'envoi d'un mail Type
            Dim LaReponse As MailItem
            Set LaReponse = Mymail.Reply
     
            'LaReponse.subject = "ici on modifie le sujet"
     
     
            'Si on veux supprimer la signature
            Select Case LaReponse.BodyFormat
            Case olFormatHTML
                LaReponse.HTMLBody = Mymail.HTMLBody
            Case Else
                LaReponse.Body = Mymail.Body
            End Select
     
     
            MonTexteEnPlus = "This message was created automatically by mail delivery software. <BR>" _
                      & "A message that you sent could not be delivered to one or more of its recipients. <BR>" _
                      & "This is a permanent error. <BR>" _
                      & "SPAM !"
     
     
            Select Case LaReponse.BodyFormat
                'ici on vérifie le format du message HTML OU BRUT ...
     
            Case olFormatHTML:
     
                OuCommenceAdresse = InStr(1, LaReponse.HTMLBody, "<BODY", vbTextCompare)
                If OuCommenceAdresse > 0 Then
                    fin = InStr(OuCommenceAdresse + 5, LaReponse.HTMLBody, ">") + 1
                    BaliseBody = Mid(LaReponse.HTMLBody, OuCommenceAdresse, fin - OuCommenceAdresse)
     
                    LaReponse.HTMLBody = Replace(LaReponse.HTMLBody, BaliseBody, BaliseBody & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & MonTexteEnPlus & "</font><BR>" _
                                                                               & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>", 1, 1, vbTextCompare)
                Else: LaReponse.HTMLBody = "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & liste & _
                                           "</font><BR>" & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>" & LaReponse.HTMLBody
     
                End If
            Case Else
                LaReponse.Body = Replace(MonTexteEnPlus, "<br>", vbCr) & Chr(10) & String(NbTiret, "-") & Chr(10) & Chr(10) & LaReponse.Body
     
            End Select
     
           'commentez/Décommentez la première
             LaReponse.Display
            '    LaReponse.Send
     
        End If
        Set Mymail = Nothing
        Set olNS = Nothing
    fin:
    End Sub
     
    Private Function Get_sender_SMTP(OITEM As Outlook.MailItem) As String
        Dim oEU As Outlook.ExchangeUser
        On Error Resume Next
        Set oEU = OITEM.Sender.GetExchangeUser
     
        Get_sender_SMTP = oEU.PrimarySmtpAddress
        If Get_sender_SMTP = "" Then Get_sender_SMTP = OITEM.SenderEmailAddress
    End Function
    et créée la règle qui lance le script à la réception d'un mail !

    Cette fois la macro se déclenche, mais j'ai une erreur :

    Erreur de compilation, variable non-définie et l'éditeur est positionné sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub REGLE_JUNK_TEST(StrID As Outlook.MailItem)
    surligné en jaune et plus bas, qui est surligné en bleu !

    Merci d'avance

  13. #13
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20

  14. #14
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Ca y est çà fonctionne, l'éditeur m'avait rajouté une ligne au dessus du module !
    Merci, merci, merci, mais je vais encore avoir besoin de ton aide, le code que tu m'as donné fait ceci :

    Si le corps du message contient le bon code, l'expéditeur est placé dans les EXP approuvés, sinon il renvoi un message à l'expéditeur.

    1 -Comment dois je faire pour que si l'expéditeur est déjà approuvé et qu'il ne met pas le code, je reçoive quand même le message ?


    Merci d'avance !

  15. #15
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    essaye avec cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Sub REGLE_JUNK_TEST(StrID As Outlook.MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : REGLE_JUNK_TEST
    ' Author    : OCTU
    ' Date      : 03/06/2015
    ' Purpose   : Place l'expéditeur dans les expediteurs approuvé si le corps du Mail contient un code sinon envoi une réponse
    '---------------------------------------------------------------------------------------
    '
        Dim Mymail As Outlook.MailItem
        Dim Expediteur
        If Not StrID.Class = olMail Then Exit Sub
        Set Mymail = StrID
     
        Expediteur = Get_sender_SMTP(StrID)
     
        Set RDOSession = CreateObject("Redemption.RDOSession")
        RDOSession.MAPIOBJECT = Application.Session.MAPIOBJECT
        Set JunkOptions = RDOSession.JunkEmailOptions
     
        For Each Address In JunkOptions.TrustedSenders
            If Address = Expediteur Then
                'expéditeur approuvé
                MsgBox Expediteur & " est accepté"
                Exit Sub
            End If
        Next
     
        If InStr(1, Mymail.HTMLBody, "#code#", vbTextCompare) > 0 Then
            'ajout de l'expéditeur dans les expediteurs approuves
     
            JunkOptions.TrustedSenders.add Expediteur
            JunkOptions.Save
        Else
            'envoi d'un mail Type
            Dim LaReponse As MailItem
            Set LaReponse = Mymail.Reply
     
            'LaReponse.subject = "ici on modifie le sujet"
     
     
            'Si on veux supprimer la signature
            Select Case LaReponse.BodyFormat
            Case olFormatHTML
                LaReponse.HTMLBody = Mymail.HTMLBody
            Case Else
                LaReponse.Body = Mymail.Body
            End Select
     
     
            MonTexteEnPlus = "This message was created automatically by mail delivery software. <BR>" _
                           & "A message that you sent could not be delivered to one or more of its recipients. <BR>" _
                           & "This is a permanent error. <BR>" _
                           & "SPAM !"
     
     
            Select Case LaReponse.BodyFormat
                'ici on vérifie le format du message HTML OU BRUT ...
     
            Case olFormatHTML:
     
                OuCommenceAdresse = InStr(1, LaReponse.HTMLBody, "<BODY", vbTextCompare)
                If OuCommenceAdresse > 0 Then
                    fin = InStr(OuCommenceAdresse + 5, LaReponse.HTMLBody, ">") + 1
                    BaliseBody = Mid(LaReponse.HTMLBody, OuCommenceAdresse, fin - OuCommenceAdresse)
     
                    LaReponse.HTMLBody = Replace(LaReponse.HTMLBody, BaliseBody, BaliseBody & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & MonTexteEnPlus & "</font><BR>" _
                                                                               & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>", 1, 1, vbTextCompare)
                Else: LaReponse.HTMLBody = "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & liste & _
                                           "</font><BR>" & "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>" & LaReponse.HTMLBody
     
                End If
            Case Else
                LaReponse.Body = Replace(MonTexteEnPlus, "<br>", vbCr) & Chr(10) & String(NbTiret, "-") & Chr(10) & Chr(10) & LaReponse.Body
     
            End Select
     
            'commentez/Décommentez la première
            LaReponse.Display
            '    LaReponse.Send
     
        End If
        Set Mymail = Nothing
        Set olNS = Nothing
    fin:
    End Sub

  16. #16
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Vraiement un grand merci pour ce code, il ne reste plus qu'une chose à faire, après avoir envoyé un message de confirmation, je souhaite supprimer le mail au lieu qu'il s'affiche dans la boite de réception, ou alors, si c'est plus simple, qu'il soit transférer dans un autre dossier, par exemple SPAM ?

    Je te joins mon code pour que tu vois où j'en suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
     
    Sub REGLE_JUNK_TEST(StrID As Outlook.MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : REGLE_JUNK_TEST
    ' Author    : OCTU
    ' Date      : 03/06/2015
    ' Purpose   : Place l'expéditeur dans les expediteurs approuvé si le corps du Mail contient un code sinon envoi une réponse
    '---------------------------------------------------------------------------------------
    '
        Dim Mymail As Outlook.MailItem
        Dim Expediteur
        If Not StrID.Class = olMail Then Exit Sub
        Set Mymail = StrID
     
        Expediteur = Get_sender_SMTP(StrID)
     
        ' On vérifie si l'expéditeur est déjà approuvé :
     
        Set RDOSession = CreateObject("Redemption.RDOSession")
        RDOSession.MAPIOBJECT = Application.Session.MAPIOBJECT
        Set JunkOptions = RDOSession.JunkEmailOptions
     
        For Each Address In JunkOptions.TrustedSenders
            If Address = Expediteur Then
                'expéditeur approuvé
    '            MsgBox Expediteur & " est accepté"
                Exit Sub
            End If
        Next
     
        If InStr(1, Mymail.HTMLBody, "#code#", vbTextCompare) > 0 Then
            'ajout de l'expéditeur dans les expediteurs approuves
            Set RDOSession = CreateObject("Redemption.RDOSession")
            RDOSession.MAPIOBJECT = Application.Session.MAPIOBJECT
            Set JunkOptions = RDOSession.JunkEmailOptions
            JunkOptions.TrustedSenders.Add Expediteur
            JunkOptions.Save
     
    '    ElseIf
     
        Else
            'envoi d'un mail Type
            Dim LaReponse As MailItem
            Set LaReponse = Mymail.Reply
     
            'LaReponse.subject = "ici on modifie le sujet"
     
     
            'Si on veux supprimer la signature
            Select Case LaReponse.BodyFormat
            Case olFormatHTML
                LaReponse.HTMLBody = Mymail.HTMLBody
            Case Else
                LaReponse.Body = Mymail.Body
            End Select
     
     
            MonTexteEnPlus = "<BR> </BR>" & "<BR> </BR>" & "Bonjour, vous venez de m'adresser un mail, or, vous ne figurez pas encore parmi mes expéditeurs approuvés." _
                & " Pour que je puisses dorénavant lire vos messages, merci de répondre en indiquant ce que vous lisez dans l'image ci-dessous !" _
                & " Cette procédure est à faire une seule fois, " _
                & "et sert à lutter contre les messages publicitaires !"
     
     
            Select Case LaReponse.BodyFormat
                'ici on vérifie le format du message HTML OU BRUT ...
     
            Case olFormatHTML:
     
                OuCommenceAdresse = InStr(1, LaReponse.HTMLBody, "<BODY", vbTextCompare)
                If OuCommenceAdresse > 0 Then
                    fin = InStr(OuCommenceAdresse + 5, LaReponse.HTMLBody, ">") + 1
                    BaliseBody = Mid(LaReponse.HTMLBody, OuCommenceAdresse, fin - OuCommenceAdresse)
     
                    LaReponse.HTMLBody = Replace(LaReponse.HTMLBody, BaliseBody, BaliseBody & "<font style='font-family: Verdana ;font-size: 12pt ;color:red;font-style: italic;'>" & MonTexteEnPlus & "</font><BR>" _
                                                                               & "<font style='font-family: Verdana ;font-size: 12pt ;color:black;font-style: italic;'>" & "<BR> </BR>" & "<img src='c:\capcha.jpg' >" & String(NbTiret, "-") & "</font><BR><BR>", 1, 1, vbTextCompare)
                Else: LaReponse.HTMLBody = "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & liste & _
                                           "</font><BR>" & "<font style='font-family: Verdana ;font-size: 12pt ;color:black;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>" & LaReponse.HTMLBody
     
                End If
            Case Else
                LaReponse.Body = Replace(MonTexteEnPlus, "<br>", vbCr) & Chr(10) & String(NbTiret, "-") & Chr(10) & Chr(10) & LaReponse.Body
     
            End Select
     
           'commentez/Décommentez 1 ou 2 ( 1 ouvre le message a envoyé, 2 envoi direct )
             LaReponse.Display      '1
               ' LaReponse.Send     '2
     
             ' On supprime le mail 
     
     
     
        End If
        Set Mymail = Nothing
        Set olNS = Nothing
    fin:
    End Sub
     
    Private Function Get_sender_SMTP(OITEM As Outlook.MailItem) As String
        Dim oEU As Outlook.ExchangeUser
        On Error Resume Next
        Set oEU = OITEM.Sender.GetExchangeUser
     
        Get_sender_SMTP = oEU.PrimarySmtpAddress
        If Get_sender_SMTP = "" Then Get_sender_SMTP = OITEM.SenderEmailAddress
    End Function

  17. #17
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    pour supprimer le mail c'est très simple;

    ps : Dans le texte de ta réponse, <BR> = RETOUR CHARIOT

  18. #18
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Vraiment merci à toi Oliv, grace à toi j'ai un antispam du diable !!!

    Voici le code si celà peut aider quelqu'un !

    Merci et si tu passe par Auxerre, je t'offre une bière sans souci !

    Salut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    Sub REGLE_JUNK_TEST(StrID As Outlook.MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : REGLE_JUNK_TEST
    ' Author    : OCTU
    ' Date      : 03/06/2015
    ' Purpose   : Place l'expéditeur dans les expediteurs approuvé si le corps du Mail contient un code sinon envoi une réponse
    '---------------------------------------------------------------------------------------
    '
        Dim Mymail As Outlook.MailItem
        Dim Expediteur
        If Not StrID.Class = olMail Then Exit Sub
        Set Mymail = StrID
     
        Expediteur = Get_sender_SMTP(StrID)
     
        ' On vérifie si l'expéditeur est déjà approuvé :
     
        Set RDOSession = CreateObject("Redemption.RDOSession")
        RDOSession.MAPIOBJECT = Application.Session.MAPIOBJECT
        Set JunkOptions = RDOSession.JunkEmailOptions
     
        For Each Address In JunkOptions.TrustedSenders
            If Address = Expediteur Then
                'expéditeur approuvé
    '            MsgBox Expediteur & " est accepté"
                Exit Sub
            End If
        Next
     
        If InStr(1, Mymail.HTMLBody, "###code###", vbTextCompare) > 0 Then
            'ajout de l'expéditeur dans les expediteurs approuves
            Set RDOSession = CreateObject("Redemption.RDOSession")
            RDOSession.MAPIOBJECT = Application.Session.MAPIOBJECT
            Set JunkOptions = RDOSession.JunkEmailOptions
            JunkOptions.TrustedSenders.Add Expediteur
            JunkOptions.Save
     
    '    ElseIf
     
        Else
            'envoi d'un mail Type
            Dim LaReponse As MailItem
            Set LaReponse = Mymail.Reply
     
            'LaReponse.subject = "ici on modifie le sujet"
     
     
            'Si on veux supprimer la signature
            Select Case LaReponse.BodyFormat
            Case olFormatHTML
                LaReponse.HTMLBody = Mymail.HTMLBody
            Case Else
                LaReponse.Body = Mymail.Body
            End Select
     
     
            MonTexteEnPlus = "<BR> </BR>" & "<BR> </BR>" & "Bonjour, vous venez de m'adresser un mail, or, vous ne figurez pas encore parmi mes expéditeurs approuvés." _
                & " Pour que je puisses dorénavant lire vos messages, merci de répondre en indiquant ce que vous lisez dans l'image ci-dessous !" _
                & " Cette procédure est à faire une seule fois, " _
                & "et sert à lutter contre les messages publicitaires !"
     
     
            Select Case LaReponse.BodyFormat
                'ici on vérifie le format du message HTML OU BRUT ...
     
            Case olFormatHTML:
     
                OuCommenceAdresse = InStr(1, LaReponse.HTMLBody, "<BODY", vbTextCompare)
                If OuCommenceAdresse > 0 Then
                    fin = InStr(OuCommenceAdresse + 5, LaReponse.HTMLBody, ">") + 1
                    BaliseBody = Mid(LaReponse.HTMLBody, OuCommenceAdresse, fin - OuCommenceAdresse)
     
                    LaReponse.HTMLBody = Replace(LaReponse.HTMLBody, BaliseBody, BaliseBody & "<font style='font-family: Verdana ;font-size: 12pt ;color:red;font-style: italic;'>" & MonTexteEnPlus & "</font><BR>" _
                                                                               & "<font style='font-family: Verdana ;font-size: 12pt ;color:black;font-style: italic;'>" & "<BR> </BR>" & "<img src='c:\capcha.jpg' >" & String(NbTiret, "-") & "</font><BR><BR>", 1, 1, vbTextCompare)
                Else: LaReponse.HTMLBody = "<font style='font-family: Tahoma ;font-size: 12pt ;color:red;font-style: italic;'>" & liste & _
                                           "</font><BR>" & "<font style='font-family: Verdana ;font-size: 12pt ;color:black;font-style: italic;'>" & String(NbTiret, "-") & "</font><BR><BR>" & LaReponse.HTMLBody
     
                End If
            Case Else
                LaReponse.Body = Replace(MonTexteEnPlus, "<br>", vbCr) & Chr(10) & String(NbTiret, "-") & Chr(10) & Chr(10) & LaReponse.Body
     
            End Select
     
           'commentez/Décommentez 1 ou 2 ( 1 ouvre le message a envoyé, 2 envoi direct )
             LaReponse.Display      '1
               ' LaReponse.Send     '2
     
             ' On supprime le mail
     
         Mymail.Delete
     
        End If
        Set Mymail = Nothing
        Set olNS = Nothing
    fin:
    End Sub
     
    Private Function Get_sender_SMTP(OITEM As Outlook.MailItem) As String
        Dim oEU As Outlook.ExchangeUser
        On Error Resume Next
        Set oEU = OITEM.Sender.GetExchangeUser
     
        Get_sender_SMTP = oEU.PrimarySmtpAddress
        If Get_sender_SMTP = "" Then Get_sender_SMTP = OITEM.SenderEmailAddress
    End Function
     
    'Private Sub new_mail_with_embedded()
    '
    'Dim strEntryID As String
    'Set objOL = CreateObject("Outlook.Application")
    'Set objMail = objOL.CreateItem(olMailItem)
    'objMail.Attachments.Add "c:capcha.jpg"
    ''objMail.Attachments.Add ("z:madonna.bmp")
    'objMail.HTMLBody = " "
    'objMail.Display
    ''objMail.Close olSave
    'Set objMail = Nothing
    'End Sub

Discussions similaires

  1. [mIRC] besoin d'aide pour scripting
    Par emile13 dans le forum IRC / mIRC
    Réponses: 5
    Dernier message: 03/03/2007, 00h05
  2. Aide pour script bash
    Par cmoiki dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/01/2007, 23h50
  3. Aide pour script d'analyse d'évènements
    Par Spear- dans le forum VBScript
    Réponses: 7
    Dernier message: 18/10/2006, 11h49
  4. aide pour script php/mysql
    Par jem27 dans le forum Débuter
    Réponses: 18
    Dernier message: 27/03/2006, 18h08
  5. aides pour script en shell
    Par komatek dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 12/08/2003, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo