none
(Visual Studio 2008) Erreur à l'envoi du mail sous Windows 7 64 bit RRS feed

  • Question

  • Bonjour,

    J'envoie sans problème des mails sous XP ou SEVEN 32 bit, mais sous SEVEN 64 bit j'ai l'erreur suivante :

    Echec d'envoi du courrier

    Ceci, même en neutralisant l'anti-virus

    Voici le code

        Private Sub EnvoyerMail()
            Me.Cursor = Cursors.WaitCursor
            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
            Try
                objMessage = New System.Net.Mail.MailMessage()
                objAdrExp = New System.Net.Mail.MailAddress(wExpMail, wExpNom)  '   mail et nom de Expéditeur
                objAdrRec = New System.Net.Mail.MailAddress(wDesMail, wDesNom)    '   mail et nom du Destinataire
                objMessage.From = objAdrExp
                objMessage.To.Add(objAdrRec)
                objMessage.Subject = wMesSubject    '   Le sujet
                objMessage.IsBodyHtml = True
                objMessage.Body = wMesBody          '   Le message
                If wFichierJoint <> "" Then
                    Dim fichier_joint As Attachment = New Attachment(wFichierJoint, MediaTypeNames.Application.Octet)
                    objMessage.Attachments.Add(fichier_joint)
                End If
                objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP)   '   SMTP de la messagerie
                objSMTPClient.EnableSsl = True
                objSMTPClient.Credentials = New NetworkCredential(wExpIdent, wExpMotPass)   '   Identifiant et mot de passe pour la messagerie
                objSMTPClient.Send(objMessage)
                wNbrEnvoye += 1 : Me.labEnvoye.Text = wNbrEnvoye : wNbrReste = wNbrTotal - wNbrEnvoye : Me.labRestant.Text = wNbrReste
                Me.Refresh()
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number)
                wOK = False
            End Try
            Application.DoEvents()  ' ????
            Me.Cursor = Cursors.Default
        End Sub

    Une idée ?

    Cordialement

    Sauveur CONSALVI


    Cordialement Sauveur CONSALVI

    samedi 12 mai 2012 05:49

Réponses

Toutes les réponses

  • Bonjour,

    Il faudrait nous donner le message de l'exception interne qui se produit :

    MessageBox.Show(ex.InnerException.Messsage)
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    samedi 12 mai 2012 07:56
    Modérateur
  • Bonjour, Sauveur,

    Est-ce que vous avez réussi résoudre votre problème ? Sinon, pouvez-vous svp nous indiquer le message d’erreur ? Merci de tenir la communauté informée sur la suite de vos démarches.

    Bonne journée,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    lundi 14 mai 2012 13:28
  • Bonjour,

    Le port SMTP n'est pas défini !? Car cela fonctionne très bien chez moi (Win7 64). Si je modifie comme ceci :

     objSMTPClient = New System.Net.Mail.SmtpClient(nom smtp, numéro du port)

    Bien à vous.


    ZGuideTV.NET - administrator/developer

    lundi 14 mai 2012 14:38
  • M DUDUIALA bonjour,

    Désolé, mais c'est mon ami qui possède le PC sous Windows 64b, et il ne sera disponible que mercredi prochain, 16 mai

    Je ne manquerai pas de vous part des résultats, dès que j'aurais testé

    Cordialement

    Sauveur CONSALVI


    Cordialement Sauveur CONSALVI


    lundi 14 mai 2012 15:24
  • M HUBERT bonjour,

    Merci pour votre proposition

    Employant la messagerie de GOOGLE, GMAIL, j'ai cherché le n° du port

    Sauf erreur de ma part c'est le 465

    J'ai donc modifié mon code

    Private Sub EnvoyerMail()
            Me.Cursor = Cursors.WaitCursor
            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
            Try
                objMessage = New System.Net.Mail.MailMessage()
                objAdrExp = New System.Net.Mail.MailAddress(wExpMail, wExpNom)  '   mail et nom de Expéditeur
                objAdrRec = New System.Net.Mail.MailAddress(wDesMail, wDesNom)    '   mail et nom du Destinataire
                objMessage.From = objAdrExp
                objMessage.To.Add(objAdrRec)
                objMessage.Subject = wMesSubject    '   Le sujet
                objMessage.IsBodyHtml = True
                objMessage.Body = wMesBody          '   Le message
                If wFichierJoint <> "" Then
                    Dim fichier_joint As Attachment = New Attachment(wFichierJoint, MediaTypeNames.Application.Octet)
                    objMessage.Attachments.Add(fichier_joint)
                End If
                'objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP)   '   SMTP de la messagerie
                objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP, 465)    '   SMTP de la messagerie avec le n° du port (smtp.gmail.com)
                objSMTPClient.EnableSsl = True
                objSMTPClient.Credentials = New NetworkCredential(wExpIdent, wExpMotPass)   '   Identifiant et mot de passe pour la messagerie  
                objSMTPClient.Send(objMessage)
                wNbrEnvoye += 1 : Me.labEnvoye.Text = wNbrEnvoye : wNbrReste = wNbrTotal - wNbrEnvoye : Me.labRestant.Text = wNbrReste
                Me.Refresh()
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                'If ex.InnerException.ToString <> "" Then
                '    MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number & vbCrLf & ex.InnerException.Message)
                'Else
                '    MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number)
                'End If
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number)
    
                wOK = False
            End Try
            Application.DoEvents()  ' ????
            Me.Cursor = Cursors.Default
    End Sub

    Mais j'ai l'erreur suivante

    Attente trop longue

    Est-ce le n° du port qui est erroné ?

    Sans le port, c'est OK

    Cordialement

    Sauveur CONSALVI


    Cordialement Sauveur CONSALVI

    lundi 14 mai 2012 15:41
  • SauveurConsalvi,

    Le port smtp (socket) de Gmail, c'est 587. Pour le reste votre code fonctionne. SSL etc.

    Bien à vous.


    ZGuideTV.NET - administrator/developer

    lundi 14 mai 2012 16:50
  • Bonjour Sauveur,

    Est-ce que le pc de ton ami n'aurait pas un client de messagerie pour vérifier si le port SMTP est ouvert en local (Outlook ou autre) ?

    Essaye avec le port SMTP 25


    fred on youTube
    PHP MySQL Web Site Creator
    fred

    lundi 14 mai 2012 17:38
  • M HUBERT bonsoir,

    Effectivement, c'est le 465 ou le 587

    Bien entendu, j'ai choisi le mauvais ….

    Pas de problème avec le 587

    Je ferai des tests sous Seven 64b mercredi

    Cordialement

    Sauveur CONSALVI


    Cordialement Sauveur CONSALVI

    lundi 14 mai 2012 17:45
  • Bonsoir Fred75,

    Oui, c'est OK avec le port 25

    Je ferai des tests sous Seven 64b mercredi avec mon ami

    Cordialement

    Sauveur CONSALVI


    Cordialement Sauveur CONSALVI

    lundi 14 mai 2012 17:48
  • M DUDUIALA bonjour,

    Je me suis permis d'enlever les "flags réponse" à ma question, car je n'ai pas terminé les tests

    C'est vrai, j'avais annoncé mercredi 16 mai, mais mon ami en Corse, sur le poste duquel se produit l'erreur, n'a pu se connecter à cause d'une panne d'électricité

    Ce n'est ni mauvaise volonté de ma part, ni nonchalance

    Nous avons planifié de faire un essai en fin d'après-midi ce jeudi 17 mai 2012

    Je ne manquerai pas de vous faire part des résultats

    Cordialement

    Sauveur CONSALVI


    Cordialement Sauveur CONSALVI

    jeudi 17 mai 2012 07:15
  • Bonsoirs,

    Merci à tous ceux qui ont eu la gentillesse de me répondre

    Je n'ai plus d'erreur avec le code suivant

    (J'ai dû chercher sur le net pour afficher InnerException.Messsage)

     Private Sub EnvoyerMail()
            Me.Cursor = Cursors.WaitCursor
            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
            Try
                objMessage = New System.Net.Mail.MailMessage()
                objAdrExp = New System.Net.Mail.MailAddress(wExpMail, wExpNom)  '   mail et nom de Expéditeur
                objAdrRec = New System.Net.Mail.MailAddress(wDesMail, wDesNom)    '   mail et nom du Destinataire
                objMessage.From = objAdrExp
                objMessage.To.Add(objAdrRec)
                objMessage.Subject = wMesSubject    '   Le sujet
                objMessage.IsBodyHtml = True
                objMessage.Body = wMesBody          '   Le message
                If wFichierJoint <> "" Then
                    Dim fichier_joint As Attachment = New Attachment(wFichierJoint, MediaTypeNames.Application.Octet)
                    objMessage.Attachments.Add(fichier_joint)
                End If
                'objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP)   '   SMTP de la messagerie
                objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP, 587)    '   SMTP de la messagerie avec le n° du port (smtp.gmail.com) 587
                objSMTPClient.Credentials = New NetworkCredential(wExpIdent, wExpMotPass)   '   Identifiant et mot de passe pour la messagerie 
                objSMTPClient.EnableSsl = True
                objSMTPClient.Send(objMessage)
                wNbrEnvoye += 1 : Me.labEnvoye.Text = wNbrEnvoye : wNbrReste = wNbrTotal - wNbrEnvoye : Me.labRestant.Text = wNbrReste
                Me.Refresh()
            Catch ex As System.IO.IOException
                Me.Cursor = Cursors.Default
                MsgBox(ex.InnerException)
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number & vbCrLf & vbCrLf & ex.InnerException.Message)
                wOK = False
                MessageBox.Show(ReadException(ex))
                MessageBox.Show(GetErrorText(ex))
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number)
                wOK = False
                MessageBox.Show(ReadException(ex))
                MessageBox.Show(GetErrorText(ex))
            End Try
            Application.DoEvents()  ' ????
            Me.Cursor = Cursors.Default
        End Sub
        Private Function ReadException(ByVal ex As Exception) As String
            Dim msg As String = ex.Message
            If ex.InnerException IsNot Nothing Then
                msg = msg & vbCrLf & "---------" & vbCrLf & ReadException(ex.InnerException)
            End If
            Return msg
        End Function
        Private Function GetErrorText(ByVal ex As Exception) As String
            Dim err As String = ex.Message
            If ex.InnerException IsNot Nothing Then
                err &= " - More details: " & ex.InnerException.Message
            End If
            Return err
        End Function

    Je clôture la question

    Cordialement

    Sauveur CONSALVI


    Cordialement Sauveur CONSALVI

    jeudi 17 mai 2012 17:23