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 mail par smtp authentifié à partir d'une appli en VB.NET [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 138
    Points : 77
    Points
    77
    Par défaut Envoi mail par smtp authentifié à partir d'une appli en VB.NET
    Bonjour,

    J'ai réalisé le code suivant pour envoyer automatiquement un mail avec une pièce-jointe.
    Lorsque je me connecte sur le réseau Internet de mon FAI avec un smtp non authentifié ça fonctionne très bien.
    Par contre si je me connecte sur un réseau d'un autre FAI j'ai besoin de m'authentifier en smtp et ça ne fonctionne pas, j'obtiens le message "Le délai d'attente de l'opération a expiré." Je précise que j'ai bien activé l'option smtp authentifié chez mon FAI et que j'ai bien vérifié le compte et le password.

    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
     
            Dim Mail As MailMessage
                        Dim smtp As SmtpClient
                        Dim Expediteur As String
                        Dim Destinataire As String
                        Dim CBServeur As String
                        Dim Compte As String
                        Dim PassWord As String
                        CBServeur = "smtp.free.fr"
                        Compte =  "login"
                        PassWord = "AZERTY"
                        Expediteur = "login@free.fr"
                        Destinataire = DataGridViewContacts("Email", NumLigneDataGridViewContacts).Value
                        Mail = New MailMessage
                        Try
                            smtp = New SmtpClient(CBServeur, 465) ' Le serveur SMTP
                            smtp.Credentials = New Net.NetworkCredential(Compte, PassWord)
                            smtp.UseDefaultCredentials = False
                            smtp.EnableSsl = True
     
                            Dim attachedFile As Net.Mail.Attachment = New Net.Mail.Attachment(folderPath + "Document.pdf")
                            Mail.Attachments.Add(attachedFile)
                            Mail.SubjectEncoding = UTF8Encoding.UTF8 ' L'objet
                            Mail.Subject = "Document"
                            Mail.BodyEncoding = UTF8Encoding.UTF8 ' Le message
                            Mail.Body = "Bonjour," & vbNewLine & "Je vous prie de prendre connaissance du document en pièce-jointe." & vbNewLine & "Cordialement." 
                            Mail.From = New MailAddress(Expediteur)
                            Mail.To.Add(New MailAddress(Destinataire))
                            smtp.Send(Mail) ' Envoi
                            Mail.Dispose()
     
                        Catch ex As ApplicationException
                            MessageBox.Show(ex.Message)
                        Finally
                            smtp = Nothing
                            Try ' Libérer la mémoire dans un Try car si le message
                                Mail.Dispose() ' s’est bien passé, c’est déjà chose faite.
                            Catch
                            End Try
                            Mail = Nothing
                        End Try
    Ai-je commis une erreur dans mon code concernant l'authentification et/ou la sécurité SSL ? (sachant que j'ai configuré mon adresse mail avec une authentification smtp et la sécurité SSL chez mon FAI)

    Merci pour votre aide ...

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    J'ai pu prendre une heure pour tester ce matin :-)

    smtp.Credentials = New System.Net.NetworkCredential("Ton Nom d'utilisateur ....", "Ton PWD en clair")

    Voici le code testé entier : il fonctionne.

    Maintenant, je dois vraiment m'en aller ...



    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
       Private Sub BEnvoi_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BEnvoi.Click
     
            Dim Mail As MailMessage
            Dim smtp As SmtpClient
            Dim Expediteur As String
            Dim Destinataire As String
     
            Try
                smtp = New SmtpClient("relay.proximus.be") ' Désignation du serveur SMTP
     
                Mail = New MailMessage
                Mail.SubjectEncoding = UTF8Encoding.UTF8 ' Format de codage de l'objet
                Mail.BodyEncoding = UTF8Encoding.UTF8 ' Format de codage du message
                Mail.Subject = TObjet.Text  ' L'objet du message
                Mail.Body = RTBMessage.Text ' Le message
     
                Expediteur = "phr@skynet.be"
                Mail.From = New MailAddress(Expediteur) ' Désignation de l'expéditeur
     
                Destinataire = "scxstr@gmail.com"
                Mail.To.Add(New MailAddress(Destinataire)) ' Désignation des destinataires
     
                smtp.Port = "25"
                smtp.Credentials = New System.Net.NetworkCredential("Phil Rob", "PWD")
                smtp.EnableSsl = False ' Chez moi, c'est FALSE
     
                smtp.Send(Mail) ' Envoi du message
     
                Mail.Dispose()
     
            Catch ex As ApplicationException
                MessageBox.Show(ex.Message)
            Finally
                smtp = Nothing
                Try
                    Mail.Dispose()
                Catch
                End Try
                Mail = Nothing
            End Try
     
        End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 138
    Points : 77
    Points
    77
    Par défaut
    Je pense avoir trouvé la raison de mon problème.
    Les fournisseurs de domaines (type OVH) en France rendent obligatoire la connexion au smtp par le port 465 avec sécurité ssl.

    Problème il semble que System.Net.Mail ne supporte pas l'envoi par le port 465 dans la mesure ou c'est un ssl implicite !!!

    https://support.microsoft.com/en-us/...ail-message-wi

    Les FAI en France autorisent le port 25 uniquement si le flux passe par leur réseau, dès lors qu'on utilise une connexion internet tierce ils ne permettent plus d'utiliser le port 25 pour se connecter à leur smtp, ils recommandent aussi le port 465 mais même si ça n'est pas mis en avant beaucoup permettent le port 587 avec sécurité ssl explicite.
    Or System.Net.Mail supporte le port 587 car ssl explicite !!!

    Du coup je livre ici le code qui fonctionne en utilisant le smp et mon adresse mail chez FREE mon FAI :

    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
     
                Dim Mail As MailMessage
                Dim smtp As SmtpClient
                Dim Expediteur As String
                Dim Destinataire As String
                Dim CBServeur As String
                Dim Compte As String
                Dim PassWord As String
                Dim NomExpéditeur
                NomExpéditeur = "Prénom NOM"
                CBServeur = "smtp.free.fr"
                Compte = "monidentifiant" 'partie gauche de mon adresse mail avant le @
                PassWord = "monmotdepassemail"
                Expediteur = "monidentifiant@free.fr"
                Destinataire = DataGridViewContacts("Email", NumLigneDataGridViewContacts).Value
                Mail = New MailMessage
                Try
                    smtp = New SmtpClient(CBServeur, 587) ' Le serveur SMTP
                    smtp.UseDefaultCredentials = False
                    smtp.Credentials = New System.Net.NetworkCredential(Compte, PassWord)
                    smtp.EnableSsl = True
     
                    Dim attachedFile As Net.Mail.Attachment = New Net.Mail.Attachment(folderPath + "Document.pdf")
                    Mail.Attachments.Add(attachedFile)
                    Mail.SubjectEncoding = UTF8Encoding.UTF8 ' L'objet
                    Mail.Subject = "Document à consulter"
                    Mail.BodyEncoding = UTF8Encoding.UTF8 ' Le message
                    Mail.Body = "Bonjour," & vbNewLine & "Je vous prie de consulter le document en pièce-jointe." & vbNewLine & "Cordialement." & vbNewLine & NomExpéditeur
                    Mail.From = New MailAddress(Expediteur)
                    Mail.To.Add(New MailAddress(Destinataire))
                    Mail.Bcc.Add(New MailAddress(Expediteur)) 'Pour conserver une copie du mail envoyé dans la boite de réception
     
                    smtp.Send(Mail) ' Envoi
                    Mail.Dispose()
     
                Catch ex As ApplicationException
                    MessageBox.Show(ex.Message)
                Finally
                    smtp = Nothing
                    Try ' Libérer la mémoire dans un Try car si le message
                        Mail.Dispose() ' s’est bien passé, c’est déjà chose faite.
                    Catch
                    End Try
                    Mail = Nothing
                End Try
    Avant de refermer ce sujet, un grand merci à Phil Rob qui m'a mis sur la voie

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

Discussions similaires

  1. Problème d'envoie de mail par SMTP
    Par yass dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 12/09/2008, 17h45
  2. Envoi de mail par SMTP
    Par Ataturk dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/06/2007, 18h31
  3. [FPDF] Envoi de mail au format PDF, à partir d'une page PHP
    Par King_T dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 02/05/2006, 00h21
  4. Access 97 : Envoi de mail par SMTP sans Outlook
    Par mr_foxy dans le forum Access
    Réponses: 2
    Dernier message: 16/03/2006, 15h45
  5. [Mail] Envoi de mail par SMTP ?
    Par Borami dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2006, 13h26

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