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

C# Discussion :

Gérer les différente exception SMTP


Sujet :

C#

  1. #1
    Membre expert
    Avatar de MarieKisSlaJoue
    Homme Profil pro
    Ingénieur Cloud
    Inscrit en
    Mai 2012
    Messages
    1 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Ingénieur Cloud
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 145
    Points : 3 654
    Points
    3 654
    Billets dans le blog
    20
    Par défaut Gérer les différente exception SMTP
    Bonjour,

    J'ai une application qui envoie un mail. Elle procède de la façon suivante

    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
    MailMessage monMail = new MailMessage();
                        MailAddress exp = new MailAddress(*****@gmail.com", "Test programme");
                        monMail.From = exp;
     
                        monMail.To.Add(new MailAddress("panda.developpeur@gmail.com", "Test programme"));
                        monMail.CC.Add(new MailAddress("panda.developpeur@gmail.com", "Test programme"));
     
                        monMail.Subject = "test";
                        monMail.Body = "envoyé";
     
     
     
                        SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
                        client.EnableSsl = true;
                        client.Credentials = new NetworkCredential("*****@gmail.com", line); //Line qui correspond à un mdp quelconque 
                        i++;
                        client.Send(monMail);
    Si le mdp est bon, pas de soucie.
    Maintenant j'ai deux cas SmtpExceptionque je n'arrive pas vraiment à bien gérer. Et surtout à dissocier.

    Déjà mon catch

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        catch (SmtpException e)
                    {
     
                        Console.WriteLine("Le mdp n'est pas bon numéro " + i +" : "+ line + " " + e.Message +"\n");
                    }
                    }
    Si le mdp n'est pas bon donc erreur celle ci exactement
    Interception de System.Net.Mail.SmtpException
    HResult=-2146233088
    Message=Le serveur SMTP requiert une connexion sécurisée ou le client n'était pas authentifié. La réponse du serveur était : 5.5.1 Authentication Required. Learn more at
    Source=System
    StackTrace:
    à System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
    à System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode)
    à System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception)
    à System.Net.Mail.SmtpClient.Send(MailMessage message)
    à FindPassword.Program.Main(String[] args) dans c:\Users\MKSJ\Documents\GitHub\Password\Password\Program.cs:ligne 48
    InnerException:
    Dans cette erreur, si je retape le bon mdp après, je peux me connecter.

    par contre si je me suis tromper trop de fois j'ai toujours une SmtpException

    celle-ci

    Interception de System.Net.Mail.SmtpException
    HResult=-2146233088
    Message=Échec d'envoi du courrier.
    Source=System
    StackTrace:
    à System.Net.Mail.SmtpClient.Send(MailMessage message)
    à FindPassword.Program.Main(String[] args) dans c:\Users\MKSJ\Documents\GitHub\Password\Password\Program.cs:ligne 48
    InnerException: System.IO.IOException
    HResult=-2146232800
    Message=Impossible de lire les données de la connexion de transport : net_io_connectionclosed.
    Source=System
    StackTrace:
    à System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine)
    à System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
    à System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
    à System.Net.Mail.CheckCommand.Send(SmtpConnection conn, String& response)
    à System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode)
    à System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception)
    à System.Net.Mail.SmtpClient.Send(MailMessage message)
    InnerException:
    et donc la même si j'utilise le bon mdp, cette erreur va se reproduire.
    (Donc je suppose que c'est l'erreur qui doit empêcher le brut force. Mais en réalité je ne suis même pas sur de ce qui provoque ce changement d'erreur.)


    Donc voila j’aimerai pouvoir dissocier ces deux source d'erreur dans mon programme pour à chaque fois appliquer une solution différente. Mais je n'y arrive pas.

    Savez vous comment faire ?
    Ce post à été écrit par un panda
    Apollo 11 - AGC revue de code
    -- qwerty keybord

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Pour pouvoir les distinguer, tu peux regarder la propriété SmtpException.StatusCode.

    La liste des valeurs possibles correspond à l'énumération SmtpStatusCode.

    Tu as un exemple de code sur le premier lien
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre expert
    Avatar de MarieKisSlaJoue
    Homme Profil pro
    Ingénieur Cloud
    Inscrit en
    Mai 2012
    Messages
    1 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Ingénieur Cloud
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 145
    Points : 3 654
    Points
    3 654
    Billets dans le blog
    20
    Par défaut
    En effet elles ont un code différent, du coup je vais pouvoir les distinguer.
    Par contre je n'ai pas le code au quel je me serai attendu.

    j'aurai penser avoir le code ClientNotPermitted vu que c'est le mdp qui est erroné. Au lieu de ça j'ai MustIssueStartTlsFirst (encore elle ok) en premier puis ensuite GeneralFailure.

    Y a t'il un moyen d'en savoir sur plus sur le déclenchement d'une erreur ?

    Question subsidiaire. Vu que je vais devoir travailler avec d'autre mail, donc d'autre serveur smtp. Peut on trouver quelque part une sorte de règles du fonctionnement des différent serveurs smtp ? Comme le nombre d’échec ils autorisent, le délais entre deux tentative.

    Ou alors je dois moi même faire les test pour chaque serveur smtp ?
    Ce post à été écrit par un panda
    Apollo 11 - AGC revue de code
    -- qwerty keybord

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par MarieKisSlaJoue Voir le message
    j'aurai penser avoir le code ClientNotPermitted vu que c'est le mdp qui est erroné. Au lieu de ça j'ai MustIssueStartTlsFirst (encore elle ok) en premier puis ensuite GeneralFailure.

    Y a t'il un moyen d'en savoir sur plus sur le déclenchement d'une erreur ?
    Regarde sur le second lien que je t'ai donné (celui vers l'enum), à côté de chaque message tu as l'explication pour savoir à quoi ça correspond

    Citation Envoyé par MarieKisSlaJoue Voir le message
    Question subsidiaire. Vu que je vais devoir travailler avec d'autre mail, donc d'autre serveur smtp. Peut on trouver quelque part une sorte de règles du fonctionnement des différent serveurs smtp ? Comme le nombre d’échec ils autorisent, le délais entre deux tentative.

    Ou alors je dois moi même faire les test pour chaque serveur smtp ?
    Oui c'est toi qui doit faire des tests, chacun étant libre de configurer son serveur SMTP comme il l'entend...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/03/2011, 15h18
  2. [TortoiseSVN] Gérer les différent dossiers sur svn
    Par snyfir dans le forum Subversion
    Réponses: 2
    Dernier message: 01/03/2010, 13h29
  3. Gérer les différent dossiers sur svn
    Par snyfir dans le forum ALM
    Réponses: 0
    Dernier message: 19/02/2010, 09h49
  4. Comment gérer les différentes actions
    Par Stolker dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2008, 17h27
  5. Réponses: 1
    Dernier message: 20/09/2007, 09h27

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