Envoi de mail [Résolu]

cs_Bernard74 40 Messages postés samedi 1 mars 2003Date d'inscription 26 janvier 2013 Dernière intervention - 25 janv. 2013 à 14:24 - Dernière réponse : cs_Bernard74 40 Messages postés samedi 1 mars 2003Date d'inscription 26 janvier 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Bernard74 40 Messages postés samedi 1 mars 2003Date d'inscription 26 janvier 2013 Dernière intervention - 26 janv. 2013 à 08:48
3
Merci
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.

Merci cs_Bernard74 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de cs_Bernard74
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 25 janv. 2013 à 14:28
0
Merci
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..
Commenter la réponse de lolokun
cs_Bernard74 40 Messages postés samedi 1 mars 2003Date d'inscription 26 janvier 2013 Dernière intervention - 25 janv. 2013 à 14:35
0
Merci
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 .....
Commenter la réponse de cs_Bernard74
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 25 janv. 2013 à 14:50
0
Merci
Sais-tu compter jusqu'à 3 ?
Commenter la réponse de cs_Jack
cs_Bernard74 40 Messages postés samedi 1 mars 2003Date d'inscription 26 janvier 2013 Dernière intervention - 25 janv. 2013 à 15:05
0
Merci
Merci pour ton aide précieuse, je vais me débrouiller autrement en dehors de toutes considérations agressives
Commenter la réponse de cs_Bernard74
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 25 janv. 2013 à 15:10
0
Merci
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.
Commenter la réponse de ucfoutu
Utilisateur anonyme - 25 janv. 2013 à 17:59
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
cs_Bernard74 40 Messages postés samedi 1 mars 2003Date d'inscription 26 janvier 2013 Dernière intervention - 25 janv. 2013 à 18:03
0
Merci
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)"
Commenter la réponse de cs_Bernard74

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.