Function marche sous IDE mais pas en executable [Résolu]

Signaler
Messages postés
99
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
21 avril 2020
-
Messages postés
2152
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
23 mai 2020
-
Bonjour à tous,

J'ai un problème avec une fonction ( voir titre )

Public Function Envoi_Mail(Sujet As String, Mes As String) As Boolean 'Envoyer infos par mail
        Dim client As New System.Net.Mail.SmtpClient
        Using messageMail As New System.Net.Mail.MailMessage
            client.Credentials = New System.Net.NetworkCredential("Adresse@hotmail.com", Pass )
            client.Port = 587 'définition du port 
            client.Host = "smtp.live.com" 'définition du serveur smtp
            client.EnableSsl = True
            messageMail.From = New System.Net.Mail.MailAddress(AdresseMail)
            messageMail.To.Add("xxxxx@xxx.fr")
            messageMail.Subject = Sujet
            messageMail.Body = Mes
            Try
                client.Send(messageMail) 'envoi du mail
                Return True
            Catch ex As Exception
                Return False
            Finally
                messageMail.Dispose()
            End Try
        End Using
    End Function


Cela marche quand je suis sous l'IDE mais pas une fois installé sur mon ordinateur : j'ai un message d'erreur ' L'adresse ne peut pas être une chaine vide "

Je ne comprends pas pourquoi
si quelqu'un peut m'aider ,Merci

3 réponses

Messages postés
14835
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 mai 2020
404
Bonjour

Tout d’abord, voici un petit tuto sur la bonne utilisation des balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, tu as laissé une adresse mail en clair dans le code. J’ai fait un signalement pour qu’un modérateur l’anonymise.

Enfin, dans ton try catch, ta close Finaly ne sera pas traitée car tu fais un return à la fin du try et dans le catch.
Je ne sais pas te dire si ça peut être la cause de ton problème.
Tu pourrais modifier ainsi
            Dim res as Boolean
            Try
                client.Send(messageMail) 'envoi du mail
                res = True
            Catch ex As Exception
                res = False
            Finally
                messageMail.Dispose()
            End Try
            Return res


Si ça ne résout pas le problème.
Option1, tu mets un try cacth pour toute la méthode.
Dans le catch tu fais afficher un message avec la trace de l’erreur.
Éventuellement, tu postes cette traces ici.
Option 1.1 plutôt qu’un message tu mets la trace dans un fichier fichier de log, c’est plus facile pour la copier coller.

Option2, tu écris un fichier de log toutes les n lignes de la méthode, tu y mets l’état des variables et des objets. Si n vaut 1 tu vas cerner au plus juste la ligne qui plante dès le premier essai, sinon tu auras peut-être à faire plusieurs essais.

Rien n’empêche de mixer les 2 options, au contraire même.

Si tu reviens poster log ou message d’erreur, poste le code modifié avec
Messages postés
99
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
21 avril 2020

Merci ça marche comme sur des roulettes
Excuse moi pour la balise code

Public Function Envoi_Mail(Sujet As String, Nombretir As Integer, Mes As String) As Boolean 'Envoyer infos par mail
        Dim client As New System.Net.Mail.SmtpClient
        Dim res As Boolean
        Using messageMail As New System.Net.Mail.MailMessage
            client.Credentials = New System.Net.NetworkCredential("gildeplomb@hotmail.com", pass)
            client.Port = 587 'définition du port 
            client.Host = "smtp.live.com" 'définition du serveur smtp
            client.EnableSsl = True
            messageMail.From = New System.Net.Mail.MailAddress(AdresseMail)
            messageMail.To.Add("xxxxxx@xxx.fr")
            messageMail.Subject = Sujet
            messageMail.Body = Mes
            Try
                client.Send(messageMail) 'envoi du mail
                res = True
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
                res = False
            End Try
            messageMail.Dispose()
        End Using
        Return res
    End Function
Messages postés
2152
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
23 mai 2020
109
Bonjour
Si tout fonctionne nickel ( ce que l'on souhaite ) pense à clôturer le sujet

Merci
Messages postés
14835
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 mai 2020
404
De rien.
Peux tu marquer le sujet résolu avec la roue dentée tout en haut du fil?