Email CDO par VBA_Excel

Résolu
Bonjour,
J'ai copié le code proposé par lermite222 il y a 4 ou 5 ans, j'ai copié les paramètres serveur smtp sur Thunderbird installé sur mon PC mais j'ai toujours l'un des 2 msg d'erreur suivants:
- le message a échoué dans la connexion au serveur ou
- le serveur a répondu "not available.
Comme je n'étais pas sûr de mon affaire j'ai fait l'essai avec
- 2 valeurs pour smtpusing
- 3 mots de passe différents
- 3 numéros de port smtp différents
sans rien améliorer.
Quelle autre erreur ai-je faite ?
Merci d'avance
Cordialement
Pierre

7 réponses

  1. Encore merci à Thev,
    J'ai adapté ton code à mes besoins:
    - envois individuels à une série de destinataires
    - temps d'attente variable aléatoirement entre les envois.
    -adjonction de 2 pièces jointes
    Comme le tout s'inscrit dans une boucle Do While, les 2 annexes étaient ajoutées à chaque itération, d'où
    2ème envoi: 4 annexes
    3ème envoi: 6 annexes, etc.
    Donc adjonction d'un saut conditionnel "par dessus" l'ajout des annexes, dès le 2ème envoi.
    Pour mes essais: numéroteur d'envois (variable numero).
    Sur la feuille "donnees", j'ai:
    colonne A nom de faamille
    col B prénom
    col C adresse e-mail
    cellule D1 Sujet
    cellules F1 à F10 éléments du corps
    cellule H1: enregistrement des envois (pour numérotation). Je joins le code pour qui en aurait l'usage
    Option Explicit

    'ver 8 (d'après le code de thev sur CCM) avec
    'a) série d'adresses individualisées
    'b) durée variable entre les envois
    'c) composition du corps du texte
    'd) élimination des annexes multiples

    Sub EnvoiMail() 'par thev sur Comment ça marche
    'Add the Project Reference Microsoft CDO WINDOWS FOR 2000
    Dim destinataire, Sujet As String
    Dim Email_adresse As String
    Dim nom, prenom As Variant
    Dim secondes, numero, saut As Integer
    Dim attente As Variant
    Dim Corps, nombre As String
    Dim ligne, colonne, lig, col As Integer
    ligne = 1
    colonne = 3
    lig = 1
    col = 6

    nombre = Cells(1, 8).Value
    numero = Len(nombre) + 12

    saut = 1
    Dim adresse_mail As String

    'sélection des adresses
    adresse_mail = ""
    ThisWorkbook.Sheets("donnees").Activate
    Do While Cells(ligne, 3).Value <> ""
    If Cells(ligne, 3).Value <> "" And Cells(ligne, 3).Value Like "?*@?*.?*" Then
    adresse_mail = Cells(ligne, 3).Value
    End If
    Cells(ligne, 3).Activate
    prenom = ActiveCell.Offset(0, -1).Value
    nom = ActiveCell.Offset(0, -2).Value

    Corps = "Mon cher" & " " & prenom & " " & nom & Chr(10)

    'tirage au sort des durées d'attente
    Randomize
    secondes = Int((3 * Rnd) + 2)
    If secondes <= 9 Then
    attente = "0:00:0" & secondes
    Else
    If secondes >= 10 Then
    attente = "0:00:" & secondes
    End If
    End If

    'récupération du sujet
    Sujet = ThisWorkbook.Sheets("donnees").Cells(1, 4).Value _
    & " " & "(le numéro" & " " & numero & ")"

    'composition du texte du corps
    ThisWorkbook.Sheets("donnees").Activate
    Do While Cells(lig, 6).Value <> ""
    Corps = Corps & " " & Cells(lig, col).Value
    lig = lig + 1
    Loop
    'MsgBox ("le corps contient" & Corps)

    Dim cdo_msg As New CDO.Message

    'configuration message
    cdo_msg.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
    cdo_msg.Configuration.Fields(cdoSMTPConnectionTimeout) = 60
    cdo_msg.Configuration.Fields(cdoSendUsingMethod) = cdoSendUsingPort
    cdo_msg.Configuration.Fields(cdoSMTPServerPort) = 465
    cdo_msg.Configuration.Fields(cdoSMTPAuthenticate) = cdoBasic
    cdo_msg.Configuration.Fields(cdoSMTPUseSSL) = True
    cdo_msg.Configuration.Fields(cdoSendUserName) = "mon_ID@gmail.com"
    cdo_msg.Configuration.Fields(cdoSendPassword) = "mon_PW"
    cdo_msg.Configuration.Fields.Update

    Application.Wait (Now + TimeValue(attente))

    'remplissage et envoi message
    cdo_msg.To = adresse_mail
    cdo_msg.From = "mon_ID@gmail.com"
    'cdo_msg.CC = "dest. copie"
    'cdo_msg.BCC = "dest_copie_cachée"
    cdo_msg.Subject = Sujet
    cdo_msg.TextBody = Corps
    If saut > 1 Then
    GoTo envoi
    End If
    cdo_msg.AddAttachment ("E:\2_M_E_S__P_R_O_J_E_T_S\LeCourant\e_mailing\Annexe_bidon1.doc")
    cdo_msg.AddAttachment ("E:\2_M_E_S__P_R_O_J_E_T_S\LeCourant\e_mailing\Annexe_bidon2.doc")
    envoi:
    cdo_msg.Send
    ligne = ligne + 1
    lig = 1
    Cells(1, 8).Value = nombre & "x"
    saut = saut + 1
    Loop

    'libération objet message
    Set cdo_msg = Nothing
    End Sub


    Cordialement
    Pierre