Envoi de mail

Résolu
cs_Bernard74 Messages postés 40 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 26 janvier 2013 - 25 janv. 2013 à 14:24
cs_Bernard74 Messages postés 40 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 26 janvier 2013 - 26 janv. 2013 à 08:48
Bonjour,
J'ai une routine d'envoi de mail qui fonctionne parfaitement quand je suis en mode "debug" mais ne marche pas quand je suis en exécution réelle. Voilà mon code :
Try
objMessage = New System.Net.Mail.MailMessage()
objAdrExp = New System.Net.Mail.MailAddress(TextBox_Expediteur.Text)
objAdrRec = New System.Net.Mail.MailAddress(Adr_Mail_Serveur)
' SUJET DU MESSAGE
objMessage.Subject = Num_Fax_Fax
' ADRESSE MAIL DE L EXPEDITEUR
objMessage.From = objAdrExp
' ADRESSE MAIL DU DESTINATAIRE
objMessage.To.Add(objAdrRec)
objMessage.Priority = Net.Mail.MailPriority.Normal
objMessage.IsBodyHtml = False
Body = "Envoi de fax" & vbCrLf & vbCrLf ' Corps du message
Dim thedate As DateTime
thedate = System.DateTime.Now
Body = Body & "Date : " & thedate & vbCrLf
Body = Body & "From : " & TextBox_Expediteur.Text & vbCrLf
Body = Body & "To : " & Num_Fax_Fax & vbCrLf
Body = Body & "Pièce jointe : " & Nom_Fic_Joint & vbCrLf
objMessage.Attachments.Add(New System.Net.Mail.Attachment(Nom_Fic_Joint))
objMessage.Body = Body
objMessage.IsBodyHtml = False
objSMTPClient = New System.Net.Mail.SmtpClient(TextBox_SMTP.Text)
objSMTPClient.Send(objMessage) ' Envoi du message
MessageBox.Show("Le mail a bien été envoyer", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ' Et si ca marche pas
'on met un message d'erreur
MessageBox.Show("Le mail n'a pas pu etre envoyé" & vbCrLf & "SMTP=" & TextBox_SMTP.Text & vbCrLf & "EXPEDITEUR=" & TextBox_Expediteur.Text & vbCrLf & "DESTINATAIRE=" & Adr_Mail_Serveur & vbCrLf, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

> En exécution réelle, je sort systématiquement par le "Catch"

Avec mes remerciements

Bernard

8 réponses

cs_Bernard74 Messages postés 40 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 26 janvier 2013
26 janv. 2013 à 08:48
Problème réglé. Après analyse du trafic réseau, c'est un FireWall (Comodo, que je vous déconseille fortement) qui ne fonctionnait pas correctement et bloquait les connexions réseaux pour mon programme, malgré les autorisations données. Je l'ai désinstallé et tout va bien.
3
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
25 janv. 2013 à 14:28
Bonjour,

La coloration syntaxique aurait été plus agréable pour lire ton code (3eme icône en partant de la droite)

Et tu as un message d'erreur? Exécution réelle, c'est à dire l'exe lancé depuis un autre poste que celui ayant servi à coder?


L'expérience, c'est une connerie par jour, mais jamais la même..
0
cs_Bernard74 Messages postés 40 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 26 janvier 2013
25 janv. 2013 à 14:35
Merci pour ta réponse,

quand je lance l’exécution en mode debug depuis la fenêtre Visual Basic, tout se passe bien.
Quand je lance l'exécutable, après installation, sur la même machine, le sort par la routine "catch" et le mail n'est pas envoyé.

PS : Je ne trouve pas la coloration syntaxique .....
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 janv. 2013 à 14:50
Sais-tu compter jusqu'à 3 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bernard74 Messages postés 40 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 26 janvier 2013
25 janv. 2013 à 15:05
Merci pour ton aide précieuse, je vais me débrouiller autrement en dehors de toutes considérations agressives
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 janv. 2013 à 15:10
Il est toujours plus aisé d'invoquer l' "agressivité" plutôt que de se corriger, hein ...
Voilà HUIT années que tu fréquentes ce forum. La présentation d'un code entre balises code n'est pas un "caprice", mais une nécessité et une marque de respect.
C'était la raison du dernier message de jack
Et je la plussoie.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
25 janv. 2013 à 17:59
Bonjour,

Il me semble que ce serait logique de faire afficher le message d'erreur généré par le système dans ton Catch.

au lieu de mettre juste catch, tu mets

catch ex as exception


pour récupérer des informations essentielles sur l'exception, incluant le message d'erreur. Et tu ajoutes, même si c'est juste temporaire:

messagebox.show(ex.message)

Au moins, avec cela tu restreins le problème a du connu.
0
cs_Bernard74 Messages postés 40 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 26 janvier 2013
25 janv. 2013 à 18:03
Imports System.Web.Mail
Imports System.IO
Imports System.Xml
Imports Microsoft.Win32 'pour l'utilisation du registre
Public Class Form_Envoyer
Inherits System.Windows.Forms.Form
.
.
.

Private Sub Button_Envoyer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Envoyer.Click
Dim objMessage As System.Net.Mail.MailMessage
Dim objAdrExp As System.Net.Mail.MailAddress
Dim objAdrRec As System.Net.Mail.MailAddress
Dim objSMTPClient As System.Net.Mail.SmtpClient
Dim Nom As String
Dim Requete As String
Dim Cmde As String
If TextBox_SMTP.Text = "" Then
MessageBox.Show("Il faut remplir la case pour le serveur SMTP", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error)
TextBox_SMTP.Select() ' Sélectionne TextBox_SMTP
Exit Sub ' Et on se casse
ElseIf TextBox_Expediteur.Text = "" Then
MessageBox.Show("Il faut remplir la case pour l'adresse de l'expediteur", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error)
TextBox_Expediteur.Select() ' Sélectionne TextBox_Expediteur
Exit Sub
ElseIf TextBox_Destinataire.Text = "" Then
MessageBox.Show("Il faut remplir la case pour l'adresse de destinataire", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error)
TextBox_Destinataire.Select() ' Sélectionne TextBox_Destinataire
Exit Sub
End If
Try
objMessage = New System.Net.Mail.MailMessage()
objAdrExp = New System.Net.Mail.MailAddress(TextBox_Expediteur.Text)
objAdrRec = New System.Net.Mail.MailAddress(Adr_Mail_Serveur)
' SUJET DU MESSAGE
objMessage.Subject = Num_Fax_Fax
' ADRESSE MAIL DE L EXPEDITEUR
objMessage.From = objAdrExp
' ADRESSE MAIL DU DESTINATAIRE
objMessage.To.Add(objAdrRec)
objMessage.Priority = Net.Mail.MailPriority.Normal
objMessage.IsBodyHtml = False
Body = "Envoi de fax" & vbCrLf & vbCrLf ' Corps du message
Dim thedate As DateTime
thedate = System.DateTime.Now
Body = Body & "Date : " & thedate & vbCrLf
Body = Body & "From : " & TextBox_Expediteur.Text & vbCrLf
Body = Body & "To : " & Num_Fax_Fax & vbCrLf
Body = Body & "Pièce jointe : " & Nom_Fic_Joint & vbCrLf
objMessage.Attachments.Add(New System.Net.Mail.Attachment(Nom_Fic_Joint))
objMessage.Body = Body
objMessage.IsBodyHtml = False
objSMTPClient = New System.Net.Mail.SmtpClient(TextBox_SMTP.Text)
objSMTPClient.Send(objMessage) ' Envoi du message
MessageBox.Show("Le mail a bien été envoyer", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Information)

Catch ex1 as exception <===== SORTIE ICI EN MODE NORMAL MAIS PAS EN DEBUG

'on met un message d'erreur
MessageBox.Show("Le mail n'a pas pu etre envoyé" & vbCrLf & "SMTP=" & TextBox_SMTP.Text & vbCrLf & "EXPEDITEUR=" & TextBox_Expediteur.Text & vbCrLf & "DESTINATAIRE=" & Adr_Mail_Serveur & vbCrLf & Body, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Me.Close()
End Sub 


Résultat du catch (ex1)

"System.Net.Mail.SmtpException: Échec d'envoi du courrier. ---> System.Net.WebException: Impossible de se connecter au serveur distant ---> System.Net.Sockets.SocketException: Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu 212.27.48.4:25
à System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
à System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- Fin de la trace de la pile d'exception interne ---
à System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6, Int32 timeout)
à System.Net.PooledStream.Activate(Object owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback)
à System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback)
à System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout)
à System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
à System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
à System.Net.Mail.SmtpClient.GetConnection()
à System.Net.Mail.SmtpClient.Send(MailMessage message)
--- Fin de la trace de la pile d'exception interne ---
à System.Net.Mail.SmtpClient.Send(MailMessage message)
à GesFax.Form_Envoyer.Button_Envoyer_Click(Object sender, EventArgs e)"
0
Rejoignez-nous