[VB.NET] Problème d'envoi d'un mail

Résolu
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 - 27 juil. 2010 à 11:00
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 - 27 juil. 2010 à 15:11
Salut,
Je suis stagiaire dans une boîte d'informatique où je dois créer un programme de e-syndic. Avec ce programme, le syndic devra pouvoir envoyer des mails à ses copropriétaires. Le hic c'est que je n'ai pas trouvé le code avec vb .net 2008 pour le faire. J'ai essayé plein de codes du forum et ceux de commentcamarche mais rien ne marche.Là on s'y est mis même à deux mais rien ne marche. Le code qui me parait le plus correct est le suivant :

Dim mail As New MailMessage()

        'set the addresses 
        mail.From = New MailAddress("mrassaa87@gmail.com")
        mail.To.Add("joedassin87@gmail.com")

        'set the content 
        mail.Subject = "sujet de mail"
        mail.Body = "le body du mail."
        'si tu veux attacher des piéces jointes a ton mail 
        'mail.Attachments.Add(New System.Net.Mail.Attachment("c:\bd1.mdb"))

        'send the message 
        'Dim client As New SmtpClient("adresse_de_serveur", "port")

        ' par exemple dans mon cas j'utilise le serveur smpt google avec mon compte gmail 
        Dim client As New SmtpClient("smtp.gmail.com", 587)
        client.EnableSsl = True
        client.Credentials = New NetworkCredential("*****@gmail.com", "*****")
        Try
            client.Send(mail)
            MsgBox("coucou ca va")
        Catch ex As Exception
            Dim ex2 As Exception = ex
            Dim errorMessage As String = String.Empty
            MsgBox("oy oy ca ne va pas")
            While Not (ex2 Is Nothing)
                errorMessage += ex2.ToString()
                ex2 = ex2.InnerException
            End While

            Console.WriteLine(errorMessage)
        End Try


mais il ne marche pas non plus. Il se bloque dans le Try où il y a le client.Send en dessous et il va directement au catch. On me met "Echec d'envoi" (lorque j'enléve le try et catch pour voir la nature de l'erreur) et il me disent que la connexion io est fermée (io=in/out).
J'ai vraiment besoin de votre aide car mon encadrant n'est pas là cette semaine.

Merci d'avance

P.S: je vous rassure,mon adresse email que j'ai mis n'est pas ***** ni le code d'ailleurs.

Forza Taraji!!

22 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 13:01
Essaye ton premier code :

 Dim mail As New MailMessage()
 
        mail.From = New MailAddress("mrassaa87@gmail.com")
        mail.To.Add("joedassin87@gmail.com")

        mail.Subject = "sujet de mail"
        mail.Body = "le body du mail."
       
        Dim client As New SmtpClient("xsmtp.gnet.tn")
        'Pas de port spécifié donc port 25 par défaut.
        'Pas d'authentification non plus       
        Try
            client.Send(mail)
            MsgBox("envoyé !")
        Catch ex As Exception
            MsgBox("Erreur :" & Ex.Message)
        End Try


En temps normal le FAI autorise l'envoi d'email sans authentification depuis le réseau d'un client, mais ce n'est pas sur, dans ce cas il faudra que tu paramètres les 'credentials'. Essaye ce code et donne moi le message d'erreur qui en résulte.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 12:20
Salut,

A mon avis c'est un problème de pare-feu, tu test ton code sur une bécane au boulot ? Car si il s'agit d'un réseau d'entreprise, il y a fort à parier que certains ports sortant soient bloqués.

Autre chose, les comptes comme yahoo ou gmail, sont parfois bloqués d'accès en SMTP ou POP, il faut aller sur le site de l'hébergeur pour configurer cette option.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 12:27
Pour débloquer gmail c'est fait, mais en fait mon encadrant m'a dit qu'il fallait mettre un autre smtp, celui de globalnet (xsmtp.gnet.tn) mais bon ca ne marche pas non plus (j'ai aussi changé le port smtp). Enfin il m'a proposé un autre code mais bon çane marche tjrs pas. C'est une fonction dont je dois faire appel. Voici le code :

Function SendMail(ByVal sFrom As String, ByVal sTO As String, ByVal sSubject As String, ByVal sBody As String) As Boolean
        Dim basicAuthenticationInfo As New System.Net.NetworkCredential()

        Try
            Dim msg As New System.Net.Mail.MailMessage
            Dim addressFrom As New System.Net.Mail.MailAddress(sFrom)
            Dim addressTo As New System.Net.Mail.MailAddress(sTO)

            'Dim htmlView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(sBody + "", Nothing, "text/html")
            'Add image to HTML version
            'Dim imageResource As New System.Net.Mail.LinkedResource("c:\Petrofac_colour.gif")
            'imageResource.ContentId = "HDIImage"
            'htmlView.LinkedResources.Add(imageResource)
            'Add two views to message.
            'MailMessage.AlternateViews.Add(plainTextView)
            'msg.AlternateViews.Add(htmlView)

            msg.From = addressFrom
            msg.To.Add(addressTo)
            msg.Subject = sSubject
            msg.Body = sBody
            msg.IsBodyHtml = True


            Dim smtp As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient
            smtp.DeliveryMethod = Net.Mail.SmtpDeliveryMethod.Network

            smtp.UseDefaultCredentials = True
            smtp.Credentials = basicAuthenticationInfo
            smtp.Send(msg)
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function


Et voici l'appel de la fonction :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim afrom As String = "mrassaa87@gmail.com"
        Dim ato As String = "joedassin87@gmail.com"
        Dim asj As String = "le sujet"
        Dim abd As String = "le body"

        Me.SendMail(afrom, ato, asj, abd)
End Sub


En tout cas merci pour ton aide.

P.S: oui je bosse avec la machine du bureau mais il n'y pas de problème de parefeu.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 12:29
Oups j'ai oublié de spécifier le smtp
Je viens de me rendre compte

Forza Taraji!!
0

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

Posez votre question
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 12:34
Bon j'ai fait comme ceci

Dim smtp As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient("xsmtp.gnet.tn")

mais ça ne marche pas non plus.

Forza Taraji!!
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 12:35
Ce code fonctionne, le problème vient surement d'un blocage de port, tant que tu ne te penchera pas dessus t'aura beau essayer tous les codes du monde ca ne fonctionnera pas.

mon encadrant m'a dit qu'il fallait mettre un autre smtp, celui de globalnet (xsmtp.gnet.tn)



Ce serveur SMTP, gère-t-il le SSL ?

client.EnableSsl = True


Attention, il ne faut pas se tromper non plus dans la config SMTP. Pouquoi ton encadrant t'a suggéré globalnet ? Il y a bien une raison ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 12:42
Bin apparament les mail passe par globalnet (le fournisseur internet de la boite) et non il ne gére pas le SSL selon un lien que j'ai trouvé :
http://www.gnet.tn/messagerie/comment-analyser-un-message-d-erreur-/id-menu-530.html

Il se peut même que le smtp soit smtp.gnet.fr mais même avec celui-là ça ne marche pas.

Forza Taraji!!
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 12:46
Et le port qu'il t'a donné c'était lequel ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 12:48
pas de port mêmeje pense que c'est 25 tjrs selon le même lien. Mais VB accepte qu'on lui donne seulement le smtp seulement. Je vais rajouter le port pour voir.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 12:51
Bin ça ne marche pas.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 13:10
J'ai déjà essayé auparavant avec NetworkCredentials en important System.Net mais ça ne marche pas non plus. Je vais réessayé comme tu me l'as dit avec mon premier code

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 13:14
GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 13:15
Pour dire que ça marche. Merci bcp. Au moins là je vais pouvoir avancer.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 13:18
Donc en fait c'était le SSL qui bloquait tout. En tout cas vraiment merci.

Forza Taraji!!
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 13:22
Je veux préciser pour ceux qui voudrons consulter ce code que ma boite est en Tunisie et que le fournisseur internet est Globalnet. Il faudra juste modifier le smtp (par exemple smtp.gmail.com)

Forza Taraji!!
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 13:36
Précision :

Les fournisseurs d'accès permettent généralement la connexion et l'envoi d'email sans authentification mais ce n'est pas toujours le cas, donc si cela ne fonctionne pas bien penser à configurer les 'credentials'.

Certains FAI n'autorisent l'envoi d'email que si celui de l'expéditeur fait parti du réseau. Ex:

Serveur SMTP : smtp.mail.yahoo.fr
Expéditeur : toto@yahoo.fr

Même nom de domaine.

Pour finir j'ajouterais que le port par défaut des serveurs SMTP est 25, mais le port par défaut des serveurs SMTP gérant le SSL est 465, cependant d'autres port peuvent être attribués tout dépend de la configuration du serveur du fournisseur du service.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 13:41
Mais moi j'ai un compte gmail.com alors que j'ai mis le smtp de gnet.tn . Comme je te l'ai dit, selon mon encadrant, gnet lui arrive apparemment tous les mails de ses abonnés.
Sinon pour tes précision et je rajouterais le NetworkCredentials pour garantir la sécurité.

Forza Taraji!!
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 14:00
Sinon pour tes précision et je rajouterais le NetworkCredentials pour garantir la sécurité.


Cela ne garanti en rien la sécurité de ton application, les credentials sont requis ou non par le FAI, c'est lui qui décide si oui ou non il autorise l'accès sans identifiants. Si tu envoi tes identifiants alors qu'ils ne sont pas requis, cela fonctionnera certainement mais ca ne protégera pas plus ton application, bien au contraire, tu envoi en claire tes ID et mot de passe sur le réseau, il y a donc forcément un risque d'interception et de piratage.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
mrassaa Messages postés 143 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 juin 2013 1
27 juil. 2010 à 14:16
mmm...ok. Mais bon je suppose que pour ce qui de la sécurité mon encadrant sera là. En plus, mon application en fait ne doit pas être faite en vb mais en un langage qui peut être hébergé sur le net (je m'embrouille avec les mots, il se peut que ce je dis ne soit totalement correct parce que je ne suis pas calé en la matière). Mais l'encadrant m'a dit que je pouvais commencer par le vb .net (vu que je le maîtrise un petit peu) et qu'une le programme en place en vb, il m'aidera à le traduire pour qu'il puisse être hébergé. Je pense (c'est mon opinion après un peu de recherche) que ça va se faire le WPF (lorsqu'on fait ajouter élément avec vb express edition, on trouve l'élément Page (WPF)).

Forza Taraji!!
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 juil. 2010 à 14:27
VB.Net peut être un langage Web, il peut être utilisé pour l'ASP.NET comme c'est le cas pour ce site. Le VB.Net peut aussi être mis à disposition des utilisateurs sur Internet via les services Web. Tout dépend de l'hébergeur (nécessite un hébergement Windows + IIS et non Linux + Apache qui sont moins couteux voir gratuit dans certains cas etant sous licence GNU). D'ou l'appellation '.Net'. De plus avec Silverlight (concurent de Flash) il est possible de faire des applications web coté client en se servant de code VB.

Ce que je trouve étrange c'est que ton encadrant te laisse commencer une application Winform pour la traduire en application Web, ça n'a pas vraiment de sens, qu'il te laisse passer d'un langage à un autre passe encore mais traduire une application Windows en site web... Vous risquez de butter sur plus de difficultés.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous