Function marche sous IDE mais pas en executable

Résolu
Gildeplomb
Messages postés
102
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
24 mars 2021
- Modifié le 2 févr. 2020 à 14:05
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
- 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
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
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
102
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
24 mars 2021

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
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
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
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
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