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 de mails - problème avec smtpmail.send


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 28
    Points : 18
    Points
    18
    Par défaut Envoi de mails - problème avec smtpmail.send
    Bonjour,
    Je tente d'envoyer des mails avec la fonction smtpmail.send et j'aimerai vous faire part d'un problème que j'ai rencontré avec cette fonction: (voila mon code)

    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
     
    Function CreateMail(ByVal _Destinataire As String, ByVal _Objet As String, ByVal _Message As String, Optional ByVal _Pathjoint As String = "") As Boolean
            Dim email As New System.Web.Mail.MailMessage
     
            email.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", nomuser)
            email.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", passuser)
     
            SmtpMail.SmtpServer = ServeurExterne       'choix du smtp
     
            email.From = AdresseDp
            email.To = _Destinataire
            email.Subject = _Objet
            email.Body = _Message
            email.Priority = MailPriority.Normal
     
            Dim chemin() As String
            If _Pathjoint <> "" Then  'envoi des pieces jointes
                Try
                    chemin = _Pathjoint.Split(";")
                    Dim i As Integer
                    For i = 0 To chemin.Length - 1
                        email.Attachments.Add(New MailAttachment(chemin(i)))
                    Next
                Catch
                    MsgBox("Echec de l'ajout de pièces jointes, envoi interrompu")
                    Return False
                End Try
     
            End If
     
      Try
                SmtpMail.Send(email)
                msgbox("Mail envoyé")
                Return True
            Catch ex As Exception
                MsgBox(ex.Message & "   Envoi interrompu")
                Return False
            End Try
        End Function
    J'ai programmé une fonction qui envoi un mail lorsqu'on appui sur un bouton et qui affiche une messagebox lorsque l'envoi est effectué.
    Le problème: lorsque l'exécution arrive à la ligne "SmtpMail.Send(email)", le programme commence a envoyer le mail et revient sur le formulaire du bouton et continu de tourner normalement et des que l'email est envoyé la msgbox apparait. Ainsi, alors que le premier mail n'est pas encore envoyé, l'utilisateur peut ré-appuyer sur le bouton, voir meme quitter le formulaire!
    J'aimerai pouvoir freeze le programme le temps de l'envoi du mail.

    Est ce que vous avez déjà rencontré ce problème?

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    Je ne connais pas SmtpMail, cependant il devrait y avoir un evenement du type "MailSended" qui est declanche quand le mail a ete effectivement envoye.

    Tu peux par exemple ajouter un booleen dans ton code, le mettre a True dans l'event si le mail a ete envoye, et boucler tant que ce booleen n'est pas a True (avec un timeout pour eviter une boucle sans fin)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Le problème cest que smtpmail n'a pas d'events...
    je viens de penser à une méthode assez "sale" :genre mettre un timer qui tic toutes les secondes dans le formulaire et utiliser un bool global que je passerait par exemple à false l'instruction juste avant le send...
    mais le mieu resterait d'avoir un event, est il possible d'en créer?

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Si tu avais fait une recherche tu serais tombé sur :
    http://www.developpez.net/forums/sho...d.php?t=414216
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    c'est moi qui ait mis l'avant dernier commentaire du post. mais ca ne correspondait pas tout a fait a mon problème, et vu que le post a été validé, j'en ai crée un nouveau.
    En fait je suis sous vbnet 2003 et le code que tu as fourni ne marche pas ches moi
    erreur sur:
    -Net.Mime
    -message.attachments
    -SmtpClient(server)
    -Net.CredentialCache.DefaultNetworkCredentials

    (je précise que j'ai fait l'import de web.mail

  6. #6
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Nikkobass Voir le message
    (je précise que j'ai fait l'import de web.mail
    Normal ce n'est pas le bon IMPORTS

    C'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports System.Net.Mail
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    en effet j'avais pas le bon imports =)
    je viens d'essayer et ca marche pas: en fait je suis sous vb.net 2003 et ca marche que sur le 2005... Donc le premier problème se repose...

  8. #8
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Nikkobass Voir le message
    en effet j'avais pas le bon imports =)
    je viens d'essayer et ca marche pas: en fait je suis sous vb.net 2003 et ca marche que sur le 2005... Donc le premier problème se repose...
    C'est normal la méthode décrite est valable que pour vb.NET 2005

    Pour la version 2003, il faut utiliser le namespace System.Web.Mail et pas System.Net.Mail qui n'existe pas !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    La ya un beau dialogue de sourds =)
    J'utilise le namespace system.web.mail (cf début du post) et cest avec celui ci que je rencontre des problèmes (je n'arrive pas a "geler" le programme le temps de l'envoi de mail).
    j'ai donc essayé la solution alternative avec system.net.mail et donc, ca ne marche pas car je suis en vbnet2003: je retourne donc avec ma methode de départ et j'ai tjrs les memes problèmes.

  10. #10
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Bon donc je vais te donner ma fonction spéciale VB.NET 2003 :
    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
     Private Sub Envoi()
            Try
                Dim msg As Web.Mail.MailMessage = New Web.Mail.MailMessage
     
                msg.From = "AAAfdiedler2000@free.Fr"
                msg.To = "fdiedler2000@free.Fr"
                msg.Cc = "encoreatoi@free.fr"
                msg.Body = "Bonjour" & Convert.ToChar(10) & "" + "Ceci est le contenu du mail" & Convert.ToChar(10) & "" + "A bientôt"
                msg.Attachments.Add(New MailAttachment("C:\Test - & - Prog 1\Mail.txt", MailEncoding.UUEncode))
                SmtpMail.SmtpServer = "smtp.free.fr"
                SmtpMail.Send(msg)
     
                MsgBox("message envoyé")
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    Et ca marche

    Bien sur il faut adapter le code !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    merci pour ton code... mais je rencontre le meme problème:
    je lai associé au clic d'un bouton.
    Le probleme: j'ai le temps d'appuyer plusieurs fois sur le bouton avant que la premiere msgbox "message envoyé" n'apparaisse: autrement dit, lors de son execution, le programme ne s'arrete pas pendant qu'il effectue l'operation "SmtpMail.Send(msg)". Ce que je cherche, cest un moyen de le geler pendant l'envoi pour eviter à l'utilisateur plusieurs clics malencontreux =)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    La solution m'intéresse aussi
    Citation Envoyé par Nikkobass Voir le message
    merci pour ton code... mais je rencontre le meme problème:
    je lai associé au clic d'un bouton.
    Le probleme: j'ai le temps d'appuyer plusieurs fois sur le bouton avant que la premiere msgbox "message envoyé" n'apparaisse: autrement dit, lors de son execution, le programme ne s'arrete pas pendant qu'il effectue l'operation "SmtpMail.Send(msg)". Ce que je cherche, cest un moyen de le geler pendant l'envoi pour eviter à l'utilisateur plusieurs clics malencontreux =)

  13. #13
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Nikkobass Voir le message
    merci pour ton code... mais je rencontre le meme problème:
    je lai associé au clic d'un bouton.
    Le probleme: j'ai le temps d'appuyer plusieurs fois sur le bouton avant que la premiere msgbox "message envoyé" n'apparaisse: autrement dit, lors de son execution, le programme ne s'arrete pas pendant qu'il effectue l'operation "SmtpMail.Send(msg)". Ce que je cherche, cest un moyen de le geler pendant l'envoi pour eviter à l'utilisateur plusieurs clics malencontreux =)
    Bah tu mets un boolean à false dès qu'il à cliqué sur le bouton. Ensuite une fois envoyé tu passes la variable à True et puis c'est bon. SI le mec s'obstine à cliquer 10 fois et que la variable est à False alors rien ne se passera... Tu peux aussi désactiver le bouton comme ca cela réglera le problème !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Bon comment dire,
    ya une ptite voix dans ma tete qui est en train de me dire "mais blaireau pourquoi tu ya pas pensé avant????"

    Merci beaucoup en tous cas

  15. #15
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Nikkobass Voir le message
    Bon comment dire,
    ya une ptite voix dans ma tete qui est en train de me dire "mais blaireau pourquoi tu ya pas pensé avant????"

    Merci beaucoup en tous cas
    Lol mais non !
    En tout cas c'est vrai que la question était bizarre à mes yeux...
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. Envoi de mails - Problème avec WEB.MAIL
    Par crapouye dans le forum VB.NET
    Réponses: 8
    Dernier message: 01/10/2007, 11h57
  2. [Mail] Probléme avec envoi mail sur ovh
    Par Woufeigh dans le forum Langage
    Réponses: 6
    Dernier message: 19/04/2007, 19h48
  3. [Mail] problème avec un script envoi email
    Par baguira dans le forum Langage
    Réponses: 1
    Dernier message: 28/02/2007, 11h15
  4. [Mail] envoi d'un mail, problème avec gmail
    Par kitty2006 dans le forum Langage
    Réponses: 11
    Dernier message: 30/09/2006, 08h45
  5. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26

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