Function marche sous IDE mais pas en executable

Résolu
Gildeplomb Messages postés 101 Date d'inscription samedi 29 décembre 2012 Statut Membre Dernière intervention 1 novembre 2023 - Modifié le 2 févr. 2020 à 14:05
vb95 Messages postés 3511 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 18 septembre 2024 - 1 févr. 2020 à 17:46
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

Whismeril Messages postés 19147 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 octobre 2024 660
1 févr. 2020 à 15:37
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
1
Gildeplomb Messages postés 101 Date d'inscription samedi 29 décembre 2012 Statut Membre Dernière intervention 1 novembre 2023
Modifié le 2 févr. 2020 à 14:06
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
0
vb95 Messages postés 3511 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 18 septembre 2024 169
1 févr. 2020 à 17:46
Bonjour
Si tout fonctionne nickel ( ce que l'on souhaite ) pense à clôturer le sujet

Merci
0
Whismeril Messages postés 19147 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 octobre 2024 660
1 févr. 2020 à 17:44
De rien.
Peux tu marquer le sujet résolu avec la roue dentée tout en haut du fil?
0
Rejoignez-nous