Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

envoie de mail

11 réponses
Avatar
Dan
Bonjour a tous.

J'envoie des mails avec :
objEmail = CreateObject("CDO.Message")

en gros mon code fonctionne mais lorseque je veux envoyer automatiquement
un nombre important de mail une dizaine il se plante
je recuprere l'erreur :
Le message n'a pas pu être envoyé vers le serveur SMTP. Le code d'erreur de
transport était 0x800ccc67. La réponse du serveur était 421 4.7.0
msfrf2122.sfr.fr Error: too many connections from 87.91.96.155
qu'en pensez vous et quelle solution me proposez vous.
D'avance merci de votre aide

10 réponses

1 2
Avatar
Alex C.
On 1 mar, 21:20, "Dan" wrote:
Bonjour a tous.

J'envoie des mails avec :
 objEmail = CreateObject("CDO.Message")

en gros mon code fonctionne mais lorseque  je veux envoyer automatiquem ent
un  nombre important de mail  une dizaine il se plante
je recuprere l'erreur :
Le message n'a pas pu être envoyé vers le serveur SMTP. Le code d'err eur de
transport était 0x800ccc67. La réponse du serveur était 421 4.7.0
msfrf2122.sfr.fr Error: too many connections from 87.91.96.155
qu'en pensez vous et quelle solution me proposez vous.
D'avance merci de votre aide



Peut-on voir le code complet de la fonction d'envoi de mail ? Car il
semble que vous dupliquez la connexion au serveur smtp, et que vous
envoyez plusieurs mails en parallèle.
Avatar
Jérémy Jeanson
Bonjour Dan,

CreateObjet("...")...

on est en .net, utiliser ce genre de choses sans trop de control est un
peu suicidaire de nos jours alors que l'on a des classes faites
exactement pour ce genre de traitement. Elles sont beaucoups plus
intuitives et fiables (moins de dépendances liées au poste client)

Je te donnes ici un petit exemple de code qui te serras bien utilise si
tu veux utiliser .net pour ce genre d'opérations :

Dim smtp As New System.Net.Mail.SmtpClient()
Dim mail As new System.Net.Mail.MailMessage()

// Création du mail
mail.From = New System.Net.Mail.MailAddress("")
mail.To.Add("")
mail.Subject = "L'objet du mail..."
mail.Body = "Message ...bla bla..."

' Préparation du client SMTP
smtp.Host = "Le serveur smtp.tonsmtp.com";
smtp.Credentials = new System.Net.NetworkCredential( _
"Login du compte smtp", _
"Mot de passe du comtpe SMTP")
' Envoi du mail
smtp.Send(mail)

Comme tu vois ce n'est pas très compliqué
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Dan
Merci Jérémy ,je vais essayer ca "Jérémy Jeanson"
a écrit dans le message de news:%
Bonjour Dan,

CreateObjet("...")...

on est en .net, utiliser ce genre de choses sans trop de control est un
peu suicidaire de nos jours alors que l'on a des classes faites exactement
pour ce genre de traitement. Elles sont beaucoups plus intuitives et
fiables (moins de dépendances liées au poste client)

Je te donnes ici un petit exemple de code qui te serras bien utilise si tu
veux utiliser .net pour ce genre d'opérations :

Dim smtp As New System.Net.Mail.SmtpClient()
Dim mail As new System.Net.Mail.MailMessage()

// Création du mail
mail.From = New
System.Net.Mail.MailAddress("")
mail.To.Add("")
mail.Subject = "L'objet du mail..."
mail.Body = "Message ...bla bla..."

' Préparation du client SMTP
smtp.Host = "Le serveur smtp.tonsmtp.com";
smtp.Credentials = new System.Net.NetworkCredential( _
"Login du compte smtp", _ "Mot de passe du comtpe SMTP")
' Envoi du mail
smtp.Send(mail)

Comme tu vois ce n'est pas très compliqué
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr


Avatar
Dan
Bonjour.
Voici mon code ,dans ce code,j'envoie des photos et je gere leue poids en
expediant plusieurs mails en fonction des pieces jointes


Private Sub envmail(ByRef indic As Object)
Dim comptmail = 0
envoi = text5.Text

Dim objEmail As Object

text_Renamed = Text4.Text
TAILLE = 0

If Text1.Text = "" Or Len(Text1.Text) < 5 Or InStr(Text1.Text, ".")
< 1 Or InStr(Text1.Text, "@") < 3 Then 'Si un des champs est vide, Erreur
MsgBox("Veuillez entrer vos coordonnées SVP",
MsgBoxStyle.Exclamation, "Erreur")
GoTo fini
End If
If Text2.Text = " " And Text6.Text = " " And Text7.Text = " " Then
'Si un des champs est vide, Erreur
MsgBox("Veuillez entrer les coordonnées du destinataire SVP",
MsgBoxStyle.Exclamation, "Erreur")
GoTo FIN
End If
If Text2.Text = "" And Text6.Text = "" And Text7.Text = "" Then 'Si
un des champs est vide, Erreur
MsgBox("Veuillez entrer les coordonnées du destinataire SVP",
MsgBoxStyle.Exclamation, "Erreur")
GoTo FIN
End If
message:
TAILLE = 0
objEmail = CreateObject("CDO.Message") 'Sinon, Envoyer Mail
objEmail.From = Text1.Text ' Nom envoyeur
objEmail.To = Text2.Text
objEmail.CC = Text6.Text
objEmail.bCC = Text7.Text


'*************************
objEmail.Subject = Text3.Text ' Sujet du message
'**PIECE JOINTE*********************
aaa = Split(envoi, ";")
Dim ii
ii = 0
cpjoint:
ii = ii + 1
If ii = 0 Then GoTo ENVOIM
If ii > (UBound(aaa, 1)) Then GoTo ENVOIM
If aaa(ii) = " " Then GoTo cpjoint
objEmail.AddAttachment(aaa(ii)) ' Si case cochée, alors Pièce jointe
activée
'text41 = text41 & vbCrLf & titre1(ii)
'*****************************
TAILLE = TAILLE + (FileLen(aaa(ii)) / 1000)
aaa(ii) = ""
'titre1(ii) = ""
If TAILLE < 300 Then GoTo cpjoint
ENVOIM:
objEmail.Textbody = text_Renamed ' Corps du message
Cursor = System.Windows.Forms.Cursors.WaitCursor
Dim succes As Boolean
objEmail.Send()
Cursor = System.Windows.Forms.Cursors.Default
comptmail = comptmail + 1
If UBound(aaa) = 0 Then GoTo TERMINE
If ii > (UBound(aaa)) Or ii = (UBound(aaa)) Then GoTo TERMINE
Dim ENVOI1 = Join(aaa, ";")

If ENVOI1 = "" Then GoTo TERMINE
aaa = Split(ENVOI1, ";")
GoTo message
'********************************
TERMINE:
GoTo fini
FIN:
Cursor = System.Windows.Forms.Cursors.Default
fini:
End Sub


"Alex C." a écrit dans le message de
news:
On 1 mar, 21:20, "Dan" wrote:
Bonjour a tous.

J'envoie des mails avec :
objEmail = CreateObject("CDO.Message")

en gros mon code fonctionne mais lorseque je veux envoyer automatiquement
un nombre important de mail une dizaine il se plante
je recuprere l'erreur :
Le message n'a pas pu être envoyé vers le serveur SMTP. Le code d'erreur
de
transport était 0x800ccc67. La réponse du serveur était 421 4.7.0
msfrf2122.sfr.fr Error: too many connections from 87.91.96.155
qu'en pensez vous et quelle solution me proposez vous.
D'avance merci de votre aide



Peut-on voir le code complet de la fonction d'envoi de mail ? Car il
semble que vous dupliquez la connexion au serveur smtp, et que vous
envoyez plusieurs mails en parallèle.
Avatar
Dan
Salut Jérémy .
J'ai un pb avec le compte SMTP,si je le mets en dur je ne pourai plus
l'envoyer depuis un autre compte, chez moi je n'ai pas besoin de metre ces
informations:*
smtp.Host = "Le serveur smtp.tonsmtp.com";
smtp.Credentials = new System.Net.NetworkCredential( _
"Login du compte smtp", _
"Mot de passe du comtpe SMTP")
coment faire pour contourner ce pb?
Dan

i
"Jérémy Jeanson" a écrit dans le message de
news:%
Bonjour Dan,

CreateObjet("...")...

on est en .net, utiliser ce genre de choses sans trop de control est un
peu suicidaire de nos jours alors que l'on a des classes faites exactement
pour ce genre de traitement. Elles sont beaucoups plus intuitives et
fiables (moins de dépendances liées au poste client)

Je te donnes ici un petit exemple de code qui te serras bien utilise si tu
veux utiliser .net pour ce genre d'opérations :

Dim smtp As New System.Net.Mail.SmtpClient()
Dim mail As new System.Net.Mail.MailMessage()

// Création du mail
mail.From = New
System.Net.Mail.MailAddress("")
mail.To.Add("")
mail.Subject = "L'objet du mail..."
mail.Body = "Message ...bla bla..."

' Préparation du client SMTP
smtp.Host = "Le serveur smtp.tonsmtp.com";
smtp.Credentials = new System.Net.NetworkCredential( _
"Login du compte smtp", _ "Mot de passe du comtpe SMTP")
' Envoi du mail
smtp.Send(mail)

Comme tu vois ce n'est pas très compliqué
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr


Avatar
Jérémy Jeanson
Le compte n'est pas indispensable, par contre le SMTP l'est.

Pour ne pas avoir à mettre l'adresse du serveur SMTP en dure tu peux
utiliser le fichier de configuration de ton application.

PS: C'est du Web ou du WinForm?
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Dan
c'est du WinForm

"Jérémy Jeanson" a écrit dans le message de
news:%
Le compte n'est pas indispensable, par contre le SMTP l'est.

Pour ne pas avoir à mettre l'adresse du serveur SMTP en dure tu peux
utiliser le fichier de configuration de ton application.

PS: C'est du Web ou du WinForm?
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr


Avatar
Alex C.
On 2 mar, 12:39, "Dan" wrote:
 c'est du WinForm

"Jérémy Jeanson" a écrit dans le message d enews:%

> Le compte n'est pas indispensable, par contre le SMTP l'est.

> Pour ne pas avoir à mettre l'adresse du serveur SMTP en dure tu peux
> utiliser le fichier de configuration de ton application.

> PS: C'est du Web ou du WinForm?
> --
> Jérémy JEANSON
> MCP
>http://www.jjeanson.fr



Winform ok, mais Dotnet ?

Parce que le code que je vois là c'est du VB 6.0, pas du dotnet !

Quelques conseils de lisibilité :

Nommer les textbox, c'est plus facile lors du débuggage pour s'y
trouver, par exemple text1, le renommer en Destinaire_TB, pour bine
identifier que c'est un textbox dédié à l'adresse du destinataire.

Eviter à tout prix les GOTO ... tout est faisable sans GOTO

Déclarer les variable en début de procédure, ne pas déclarer de
variable peut amener à des exception non gérées ( cas de conversion
implicites )

Je repost avec une version .Net de votre procédure ^^
Avatar
Dan
Merci pour tout,
c'est vrai que je ne suis pas tres rigoureux mais je suis deje content que
cela fonctionnnne,dans un second temps je compte revenir sur mon code ,il y
a aussi des redondances et des lignes inutiles.
GOTO oui o, me l'a deja dit mais ca facilite bien le raisonement et j'ai un
passé de programation coblo....
ma programation actuelle vient d'e la conversion de VB6 que j'effectue
tout enb ameliorant les fonctionalitées de mon appli VB6
Ok pour utiliser votre version .Net
mais comme vous pouvez le verifier je n'ai pas eu a utiliser ou tout au
moins a informer mes parametres SMTP ce qui m'est utile si je veux porter
mon appli sur unre PC.
A+
"Alex C." a écrit dans le message de
news:
On 2 mar, 12:39, "Dan" wrote:
c'est du WinForm

"Jérémy Jeanson" a écrit dans le message
denews:%

> Le compte n'est pas indispensable, par contre le SMTP l'est.

> Pour ne pas avoir à mettre l'adresse du serveur SMTP en dure tu peux
> utiliser le fichier de configuration de ton application.

> PS: C'est du Web ou du WinForm?
> --
> Jérémy JEANSON
> MCP
>http://www.jjeanson.fr



Winform ok, mais Dotnet ?

Parce que le code que je vois là c'est du VB 6.0, pas du dotnet !

Quelques conseils de lisibilité :

Nommer les textbox, c'est plus facile lors du débuggage pour s'y
trouver, par exemple text1, le renommer en Destinaire_TB, pour bine
identifier que c'est un textbox dédié à l'adresse du destinataire.

Eviter à tout prix les GOTO ... tout est faisable sans GOTO

Déclarer les variable en début de procédure, ne pas déclarer de
variable peut amener à des exception non gérées ( cas de conversion
implicites )

Je repost avec une version .Net de votre procédure ^^
Avatar
Jérémy Jeanson
Re Dan

Dans ton code tu utilises un composant de ton PC.
Il va de soit que si aucun compte mail n'a jamais été installé (ou pire
mal configuré) tes mails ne partiront jamais.

Regardes bien ce qui est possible de faire avec les fichiers de
configuration .net. C'est une fonctionnalité absolument géniale. Si tu
as du mal à l'utiliser ou à la comprendre, fais le savoir.
Je n'ai pas trop le temps de t'en faire un résumé à l'instant mais si tu
as besoin demain je devrai pouvoir.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
1 2