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

Vos Contributions VBScript Discussion :

[FAQ] Envoi de mail en SMTP, CDO


Sujet :

Vos Contributions VBScript

  1. #1
    Expert éminent sénior
    [FAQ] Envoi de mail en SMTP, CDO
    Bonsoir, pour inaugurer ce nouveau sous-forum , j'aurai besoin de votre aide pour "tester" ce code adapter de la VB

    Q : Comment envoyer un mail en utilisant CDO...(SMTP)


    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
     
    Dim oCDO
     
    Set oCDO = CreateObject("CDO.Message")
    With oCdo
       With .Configuration.Fields ' Configuration "du compte mail SMTP"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.tele2.fr"
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "587"
     
         '----- Dans le cas ou le serveur de mail (comme le mien) demande une authentification 
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "eu20012007"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MonMotdePasse"
         '----------------
         .Update
    End With
      .From = "bbil@gmail.com"
      .to = "bbil@gmail.com"
      .Subject ="Essai de mail" & Now
      .TextBody ="Voici un petit message " & vbCrlf & "pour tester l'envoi de mail par CDO/VBScript"
      .Send
    End With

    commencer par adapter la première partie du code à votre configuration de mail ... dans mon cas .. tele2.. me réclame une authentification ...par login mot de passe et l'utilisation du port 587 habituellement le port c'est 25 si vous n'avez pas besoin d'authentification modifiez les lignes ...:

    Code vb :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    (...)
    With oCdo
       With .Configuration.Fields ' Configuration "du compte mail SMTP"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.wanadoo.fr"
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "25"
         .Update
    End With
      .From = "bbil@wanadoo.fr"
      (...)

    d'avance pour vos commentaires...

  2. #2
    Membre régulier
    Salut bbil,

    beh j'ai voulu tester cela, mais j'éprouve une difficulté, j'ai eu une erreur (ligne surlignée : .Send), et j'ai le message suivant : Le transport a échoué dans sa connexion au serveur.

    J'utilise GMail, et j'ai paramétré comme suit :

    Code vb :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
    Dim oCDO
     
    Set oCDO = CreateObject("CDO.Message")
    With oCDO
       With .Configuration.Fields ' Configuration "du compte mail SMTP"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "587"
     
         '----- Dans le cas ou le serveur de mail (comme le mien) demande une authentification
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mortalino@gmail.com"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Mot De Passe"
         '----------------
         .Update
        End With
      .From = "mortalino@gmail.com"
      .to = "mortalino.nicolas@laposte.net"
      .Subject = "Essai de mail" & Now
      .TextBody = "Voici un petit message " & vbCrLf & "pour tester l'envoi de mail par CDO/VBScript"
      .Send
    End With


    J'ai même tenté de modifier le port du serveur smtp, de 587 à 465, mais rien n'y fait.

    Aurais-tu une idée ?
    Merci,
    @++
    ~Mortalino~ "Le mystérieux Chevalier : Provençal, le Gaulois"

  3. #3
    Expert éminent sénior
    Pour Gmail à priori il faudrai le port 465 ... et "une connexion ssl sécurisé"..


    Code vb :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
      .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") ="true"

    PS: mortalino , juste une question tu utilise quel client mail habituellement..?

  4. #4
    Membre régulier
    Salut bbil,

    en fait je n'utilise aucun client mail, je vais directement dessus (gmail.com + laposte.net).

    C'est pour ça que j'ai pas besoin d'un logiciel qui me récupère tous mes mails, j'ai vite fait de les trier moi même.

    Sinon, pour en revenir à ton code proposé, même avec la ligne supplémentaire, (et changement de port), j'ai toujours la même erreur.
    Dommage, ça me semble très utile.
    Pour infos, je suis au travail, donc pas vb6, j'ai placé ton code dans un module VBA-E, d'office 2003 sur XP sp1.

    @++
    ~Mortalino~ "Le mystérieux Chevalier : Provençal, le Gaulois"

  5. #5
    Expert éminent sénior
    Citation Envoyé par mortalino
    ...
    Sinon, pour en revenir à ton code proposé, même avec la ligne supplémentaire, (et changement de port), j'ai toujours la même erreur.
    Dommage, ça me semble très utile.
    Pour infos, je suis au travail, donc pas vb6, j'ai placé ton code dans un module VBA-E, d'office 2003 sur XP sp1....
    le code proposé est du VBScript tu n'as pas besoin de VB6... sinon si "tu est au travail" cela dépend aussi de comment tu est connecté à l'internet ... .? tu passe surement à travers un proxy et c'est pas sur qu'il te laisse la voie libre....? avant de te battre avec ce code tu devrai voir si tu arrive à relever tes mails avec un client standard ... ( outlook...)

  6. #6
    Membre du Club
    j'ai le meme type derreur alors que pourtant, outlock marche... que anda ?

  7. #7
    Expert éminent sénior
    Citation Envoyé par MatMeuh
    j'ai le meme type derreur alors que pourtant, outlock marche... que anda ?
    pourrai-tu nous en dire plus sur ta config... ( serveur de mail ? connections internet..?. code utilisé..)


  8. #8
    Membre du Club
    hi

    j'ai tenté le smtp.orange.Fr

    sachant que la connexion est une connexion Orange, ADSL, 1 méga via livebox tout ce qui est de plus standard...


    pour les codes... je vois pas de quoi tu parles... si ce sont les lignes de code ou des codes/mot de passe ! en tout cas, pour les lignes de code, j'ai repris le standard du CDO ! et j'ai tenté à peu près toutes les variantes visibles sur le net ! mais désolé je ne serai pas sur le poste en question avant qq jours

    a++

  9. #9
    Futur Membre du Club
    juste une petite question,
    Je suis dans une entreprise qui a sont propre serveur de messagerie et qui n'a aucun acces sur le net sur son réseau.
    J'aimerais savoir si tous les codes propose ci-dessus sont correct pour un réseau local.
    merci

  10. #10
    Expert confirmé
    Bon je viens de tester mais j'ai eu une erreur.
    Tout est dans l'image jointes.
    Bine sur j'ai mis une adresse mail, j'ai juste fait en sorte qu'on ne la voye pas sur l'image
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  11. #11
    Expert confirmé
    Cela marche
    Donc tu as maintenant un test positif

    voila cela donne ça :
    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
    Dim oCDO
     
    Set oCDO = CreateObject("CDO.Message")
    With oCdo
       With .Configuration.Fields ' Configuration "du compte mail SMTP"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "UnServeurMail"
          .Update
    End With
      .From = "toto.titi@tutu.org"
      .to = "tata.tete@tutu.org"
      .Subject ="Essai de mail" & Now
      .TextBody ="Voici un petit message " & vbCrlf & "pour tester l'envoi de mail par CDO/VBScript"
      .Send
    End With
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Débutant  
    Salut bbil

    J'ai tester ton code, que j'ai paramétrer comme suit:
    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
    Dim oCDO
     
    Set oCDO = CreateObject("CDO.Message")
    With oCdo
       With .Configuration.Fields ' Configuration "du compte mail SMTP"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "587"
     
         '----- Dans le cas ou le serveur de mail (comme le mien) demande une authentification 
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "monmail@gmail.com
         .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "monmotdepass"
         '----------------
         .Update
    End With
      .From = "bbil@gmail.com"
      .to = "bbil@gmail.com"
      .Subject ="Essai de mail" & Now
      .TextBody ="Voici un petit message " & vbCrlf & "pour tester l'envoi de mail par CDO/VBScript"
      .Send
    End With


    Me renvoi cette erreur:


    Mais je ne connait pas le port de free, quelqu'un le connait ?

  13. #13
    Expert éminent sénior
    pour ton erreur il te manque juste un " en fin de ta ligne 13...

    pour free ... et bien observe les paramétres de ton client de mail ..! ou rends-toi sur le site à free.. ( je sais pas si on as pas une fiche sur le sujet sur la rubrique Office/Outlook...)

  14. #14
    Débutant  
    J'ai mis le guillemet qu'il manquer, puis j'ai mi la ligne du port en commantaire et le script fonctionne parfaitement

    Merci bbil pour ce script.

    que sinfifi les lignes:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
         .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    et:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
         .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"

    ?



    N'y aurait il pas moyen de faire un formulaire html et de remplire le mail avec ce formulaire ?

  15. #15
    Membre régulier
    J'ai aussi le probleme de " Le transport a échoué dans sa connexion au serveur."
    Je suis au boulot j'envoi sur un serveur exchange 2007. J'ai le même code qui marche mais dans access et pas sous un vbs pourquoi ?.

    AS tu une idée de l'endroit ou cela ne marche pas ?

  16. #16
    Candidat au Club
    Quelqu'un a une idée de comment modifier le script pour rajouter une piece jointe, genre un fichier de log ?

  17. #17
    Membre habitué
    Hello,

    Je viens de tester. L'envoi de mail se passe bien. Voici les paramètres que j'ai dans mon script :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
        .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="SMTP DE MON HEBERGEUR"
        .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "adresse mail de mon compte"
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Mot de passe correspondant à l'adresse mail ci-dessus"

###raw>template_hook.ano_emploi###