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 :

PRoblème avec envoi d'email et gestion des exceptions


Sujet :

VB.NET

  1. #1
    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 PRoblème avec envoi d'email et gestion des exceptions
    Bonjour à tous,
    Je rencontre un problème avec l'envoi d'email ET avec la gestion des exceptions.

    Concernant l'envoi d'email, mon programme focntionne bien avec l'envoi d'un email, mais pose problème, de façon aléatoire, avec l'envoi multiple (appel à la même fonction d'envoi d'email dans une boucle).
    Hier, lors de l'envoi de 20 emails (pour info : avec CC), j'ai eu le message dans le journal des événements (extrait) lors de l'envoi du dernier email :
    "The following information is part of the event: System.Net.Mail.SmtpException: Failure sending mail. ---> System.Threading.ThreadAbortException: Thread was being aborted."

    Suivi d'un autre message :
    " Exception type: HttpException
    Exception message: Request timed out. "

    Ces messages ne m'aide pas à comprendre la cause du problème.

    En plus j'avais mis en place une gestion d'exceptions (code ci-dessous) mais je me rend compte (en mettant un point d'arrêt sur la ligne "Dim i As integer =0") que je ne rentre jamais dans la gestion des exceptions (le Catch).
    Je viens de faire un test (emai sans expéditeur) et je ne vais pas le Catch, mais j'ai bien un enregistrement dans le journal d'événement (donc géré par le système et pas par mon programme) mais aucun message à l'écran !

    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
    Try
                client.Send(email)
            Catch ex As SmtpFailedRecipientsException
                Dim i As Integer = 0
                For i = 0 To ex.InnerExceptions.Length
                    Dim status As SmtpStatusCode = ex.InnerExceptions(i).StatusCode
                    If (status = SmtpStatusCode.MailboxBusy Or status = SmtpStatusCode.MailboxUnavailable) Then
                        Dim str As String
                        str = "Envoi en échec, nouvel essai quand vous aurez cliquer sur OK"
                        str = str.ToUpper()
                        Response.Write(String.Format("<script>alert(""{0}"");</script>", str))
                        EventLog.WriteEntry("Site WEB", "Problème envoi email erreur n°" & status)
                        client.Send(email)
                    Else
                        Dim str As String
                        str = "Echec dans l'envoi du message " & ex.FailedRecipient(i)
                        str = str.ToUpper()
                        Response.Write(String.Format("<script>alert(""{0}"");</script>", str))
                        EventLog.WriteEntry("Site WEB", "Echec dans l'envoi du message " & ex.FailedRecipient(i) & "  Erreur n°" & status)
                    End If
                    i = i + 1
                Next
            End Try
    Donc :
    - De quoi peut venir mon problème d'envoi d'email (sachant que j'ai renvoyé l'email qui avait générer le message d'erreur et qu'il est bien passé) ?
    - Pourquoi je ne vais pas le Catch ?

    Par avance, merci.

  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 suis pas sur d'avoir tout saisi, mais si le log te met:

    " Exception type: HttpException
    Et que de ton cote, dans le code tu essaie d'intercepter une SmtpFailedRecipientsException, tu n'interceptera rien effectivement.

    Fais uniquement pour tester Catch ex As Exception, et inspecte la nature de l'exception s'il y en a une de levee.

  3. #3
    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
    Citation Envoyé par Piotrek
    Salut

    Je suis pas sur d'avoir tout saisi, mais si le log te met:



    Et que de ton cote, dans le code tu essaie d'intercepter une SmtpFailedRecipientsException, tu n'interceptera rien effectivement.

    Fais uniquement pour tester Catch ex As Exception, et inspecte la nature de l'exception s'il y en a une de levee.
    Salut,
    Désolé de ne pas avoir répondu avant : j'avais des urgences...

    J'ai donc test le Catch ex As Exception mais impossible d'avoir un affichage à l'écran pour informer l'utilisateur...
    J'ai essayé un "alert" en javascript : il ne se passe rien (le programme execute bien l'instruction).
    J'ai aussi essayé un label : idem.
    J'ai l'impression que l'affichage est "bloqué" quand on est dans le catch...

    Donc l'utilisateur ne pas être informé qu'il y a eu un problème : la seule trace est dans le journal d'évènement (donc je regarde régulièrement mais je ne peux pas regarder en permanence non plus...).
    L'application envoyant des emails aux clients, si les emails ne partent pas à l'instant voulu ca peut-être problèmatique...
    Le problème est que l'appli peut envoyer 5 emails et merder ensuite alors qu'il reste 20 emails à envoyer... Si on relance l'opération, les 5 premiers seront donc envoyés 2 fois (pas trés sérieux vis à vis de nos clients...). Je dois donc bidouiller pour que le 5 emails déjà envoyés ne partent pas la seconde fois...

    J'ai pensé à mettre en place un "buffer" pour l'envoi des emails : je stocke dans une table (dans ma BDD) les emails à envoyer et les supprime quand ils sont bien envoyé.
    En cas de plantage, l'appli commencera pas regarder dans cette table, si elle n'est pas vide, l'envoi des emails restant se ferait...
    C'est un peu lourd, surtout que l'envoi d'une trentaine d'emails à la suite ne devrait pas poser de problème "normalement"...

Discussions similaires

  1. Problème d'envoi d'email avec SMTP
    Par kariel dans le forum WinDev
    Réponses: 3
    Dernier message: 13/10/2014, 16h10
  2. Problème avec la gestion des exceptions
    Par valkeke dans le forum Langage
    Réponses: 10
    Dernier message: 13/04/2011, 15h26
  3. Problème avec envoie d'eMail
    Par GoodWear dans le forum Langage
    Réponses: 8
    Dernier message: 02/11/2009, 12h44
  4. Problème d'envoi d'email avec Jmail
    Par Mat5725 dans le forum ASP
    Réponses: 2
    Dernier message: 09/12/2005, 15h34
  5. Problème - Gestion des exceptions - MFC.
    Par Atomikx dans le forum MFC
    Réponses: 4
    Dernier message: 14/11/2005, 09h38

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