IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Envoi de mail en vb.net 2010


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Envoi de mail en vb.net 2010
    Bonjour,
    Je rencontre le problème suivant :
    Dans un programme, j'ai un envoi de mail. Cette fonction parfaitement quand je suis en mode "debug", par contre, après publication de l'application, l'envoi ne marche pas du tout (en executant le .exe). Le programme sort systématique par la routine "catch" (echec d'envoi du mail)
    Avec mes remerciements pour votre aide.
    Bernard

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

  2. #2
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut
    Merci d'utiliser la balise [CODE] Parce que là c'est pas très lisible...

    A partir de quelle ligne tu pars dans le catch ? Quelle est l'exception renvoyée ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    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 ' <===== 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

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Voilà l'erreur que catch me retourne :

    "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)"

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modif faq pour envoi de mail sous VB.net 2010
    Par Nic0s dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/03/2011, 22h05
  2. smtp envoi de mail par System.net.mail
    Par batou22003 dans le forum VB.NET
    Réponses: 7
    Dernier message: 01/02/2011, 17h11
  3. envoie de Mail avec asp.net(vb)
    Par étudiant49 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/01/2011, 10h28
  4. probleme d'envoi de mail par asp.net
    Par tortuegenie dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/03/2008, 09h08
  5. Envoi de mail en VB.NET
    Par pipololo dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/11/2005, 23h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo