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

Dotnet Discussion :

courriel pour Crash Report


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut courriel pour Crash Report
    Bonjour, j'aimerais faire un crash report dans mon application qui enverra un courriel contenant le stacktrace et autres informations pertinents. Pour cela, la seule solution que j'ai trouvée c'est d'utiliser System.Net.Mail.SmtpClient, toutefois il me faut insérer un nom d'utilisateur et un mot de passe dans le code source de l'application (il s'agit d'une application open source) et je préfère ne pas distribuer mes mots de passe. (voir le code plus bas)
    L'autre solution que j'ai trouvée était d'utiliser un service web afin que le mot de passe soit sur un serveur, toutefois je n'ai pas trouvé de host gratuit et cela ne me semble pas idéal.

    Enfin, j'aimerais avoir vos solutions afin qu'un développeur puisse obtenir automatiquement, suite à l'approbation de l'utilisateur, des informations de crash sur ses logiciels sans devoir lui demander d'envoyer un courriel (afin qu'il puisse conserver son anonymat)

    Code C# : 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
    40
    41
     
    public void SendCompletedCallback(object sender, AsyncCompletedEventArgs e) {
          var token = (string)e.UserState;
     
          if(e.Cancelled) {
            Console.WriteLine(String.Format("[{0}] Envoie annuler.", token));
          } else if(e.Error != null) {
            Console.WriteLine(String.Format("[{0}] {1}", token, e.Error));
          } else {
            Console.WriteLine(String.Format("Message envoyé."));
          }
        }
     
        [WebMethod]
        public void CrashReport(String messageBody) {
          var smtpClient = new SmtpClient("smtp.gmail.com");
          var message = new MailMessage();
     
          smtpClient.Port = 25;
     
          smtpClient.SendCompleted += SendCompletedCallback;
     
          message.From = new MailAddress("X@gmail.com");
          message.To.Add("X@gmail.com");
          message.Subject = "Crash Report";
     
          message.IsBodyHtml = false;
     
          message.Body = messageBody;
     
          message.Priority = MailPriority.High;
     
          smtpClient.UseDefaultCredentials = false;
          smtpClient.EnableSsl = true;
          smtpClient.Port = 587;
          smtpClient.Credentials = new NetworkCredential("X@gmail.com", "Y");
          smtpClient.EnableSsl = true;
     
          var userState = "Message";
          smtpClient.SendAsync(message, userState);
        }
    Dernière modification par tomlev ; 29/01/2009 à 01h19. Motif: Langage des balises CODE

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est une très mauvaise pratique de mettre des informations d'authentification en dur dans le code...
    - Ca oblige à ce que tous les utilisateurs du programme utilisent le même compte mail.
    - Si tu changes de mot de passe ou de compte mail, tu dois modifier le code (et donc distribuer la mise à jour chez tout le monde)
    - si ton programme est open source, tout le monde peut voir ton mot de passe
    - même s'il n'est pas open source, c'est très facile de récupérer le mot de passe avec un désassembleur comme Reflector

    Je ne vais pas faire une liste exhaustive des inconvénients, mais tu vois l'idée...

    Il faut mettre les paramètres du serveur SMTP dans un fichier de configuration. Le plus simple est d'utiliser la section <smtp> du fichier app.config
    http://msdn.microsoft.com/fr-fr/library/ms164240.aspx
    Ou encore mieux, tu peux mettre ces infos dans les paramètres utilisateurs (onglet paramètres dans les propriétés du projet)

    Mais de toutes façons, le mail n'est surement pas la meilleure solution pour transmettre des infos sur un crash. Il vaudrait mieux, par exemple, appeler un service web qui stocke ces informations dans une base de données

  3. #3
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    En général ce qui est bien avec les rapport de crash, c'est d'avoir une adresse avec laquelle contacter la personne en question. Si tu utilises ton propre compte pour t'envoyer le crash, ça perd son sens.
    La solution pour laquelle j'ai opté c'est de demander à l'utilisateur ses identifiants pour envoyer le message en utilisant son compte.
    Bien sur, je suppose que ce n'est pas la meilleur solution, mais y'a l'idée...

  4. #4
    Invité
    Invité(e)
    Par défaut Merci pour vos réponses
    Salut tomlev et smyley merci pour vos réponses

    tomlev
    Je suis entièrement d'accord, je n'ai pas l'intention de fournir le mot de passe de mon compte courriel (d'où la raison de cette discussion), il serait trop facile pour n'importe qui d'entré dans le compte et modifier les paramètres du compte. Toutefois, si je les mets dans un fichier de configuration ou dans les paramètre utilisateur ce sera tout aussi facile de trouvé ce mot de passe.
    Pour ce qui est du service web, j'y avais pensé toutefois je n'ai pas trouvé de host gratuit pour asp.net (heliohost a actuellement de problème pour les inscription et x10hosting semble n'être qu'un site où tu peux t'inscrire et te logger sur une page bleu vide)

    smyley
    Finalement, pour mon crash report je me suis basé sur le crash report de visual studio, (je suis sûr que tu l'as déjà vue) où tu n'a qu'à cliquer sur un bouton pour envoyé les informations du crash au serveurs de usoft. Personellement, je préfèrerais ne pas connaitre le courriel de la personne qui a subit le crash, juste les informations concernant le crash afin de le réparer.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Calicedetabarnac Voir le message
    Toutefois, si je les mets dans un fichier de configuration ou dans les paramètre utilisateur ce sera tout aussi facile de trouvé ce mot de passe.
    Oui bien sûr, mais dans ce cas l'utilisateur peut mettre les paramètres de son propre compte mail...

    Citation Envoyé par Calicedetabarnac Voir le message
    Pour ce qui est du service web, j'y avais pensé toutefois je n'ai pas trouvé de host gratuit pour asp.net
    Je disais service web au sens large... ça peut être un simple script PHP auquel tu envoies les données en POST avec un HttpWebRequest.

    Citation Envoyé par Calicedetabarnac Voir le message
    [...] tu n'a qu'à cliquer sur un bouton pour envoyé les informations du crash au serveurs de usoft.
    Ben oui mais dans ce cas c'est MS qui reçoit les infos, pas toi... et MS ne va surement pas chercher à corriger ton programme !

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par Calicedetabarnac Voir le message
    Personellement, je préfèrerais ne pas connaitre le courriel de la personne qui a subit le crash, juste les informations concernant le crash afin de le réparer.
    Et comment tu fais si tu as besoin de plus d'informations pour savoir à quel problème correspond le crash ? C'est pas si facile d'avoir tout ce qu'il faut dans le crash report pour connaître exactement l'origine du crash : on a parfois besoin de dialoguer avec la personne pour obtenir plus d'informations ...

Discussions similaires

  1. Tutorial pour Rave Report
    Par souminet dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/09/2010, 10h27
  2. Configuration imprimante matricielle pour Crystal Reports
    Par sakinaMejd dans le forum Périphériques
    Réponses: 2
    Dernier message: 30/09/2009, 15h44
  3. Quelle base de données je pourrais utiliser pour divers reporting ?
    Par xianxian620 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 10/04/2008, 21h00
  4. Réponses: 1
    Dernier message: 10/07/2007, 18h53
  5. Agata ou DataVision ? Quel est le meilleur de ces 2 outils pour le reporting ?
    Par Invité dans le forum Autres outils décisionnels
    Réponses: 1
    Dernier message: 16/05/2006, 15h39

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