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
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
-
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'usageOption 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