Comment configurez-vous les paramètres de messagerie dans CrashRpt pour envoyer le vidage sur incident?

StackOverflow https://stackoverflow.com/questions/217463

  •  03-07-2019
  •  | 
  •  

Question

Après avoir lu cette discussion et cette discussion sur l'utilisation de CrashRpt pour générer un vidage sur incident et l'envoyer par courrier électronique. les développeurs, j’ai eu du mal à trouver des instructions / tutoriels pour configurer les paramètres de messagerie utilisés par la bibliothèque pour envoyer le courrier électronique.

Lorsque vous appelez la fonction install () pour initialiser CrashRpt, vous spécifiez l'adresse électronique à laquelle vous souhaitez envoyer le vidage sur incident, mais comment la bibliothèque CrashPrt sait-elle comment envoyer le courrier électronique à cette adresse? La bibliothèque ne devrait-elle pas connaître les paramètres du client de messagerie pour chaque utilisateur?

Lorsqu'un plantage fatal se produit dans mon code, la boîte de dialogue CrashRpt apparaît. Lorsque je saisis mon adresse e-mail et que je clique sur le bouton Envoyer, le message "Enregistrer le fichier" s'affiche. boîte de dialogue dans laquelle je peux enregistrer le package compressé et le compte spécifié dans la fonction Install () ne reçoit jamais d’e-mail.

Merci d'avance pour toute aide! Il me manque clairement quelque chose.

Était-ce utile?

La solution

Que fait CrashRpt pour l'envoi de courriers électroniques:

Le système de messagerie utilise simplement MAPI pour envoyer votre courrier électronique. Ce qui essaierait d'utiliser votre client de messagerie par défaut si vous en avez un et s'il prend en charge MAPI. Jetez un coup d'oeil à MailMsg.cpp pour plus de détails.

Expérience personnelle:

Dans l’utilisation de CrashRpt par ma société, nous l’avons quelque peu modifiée pour appeler un service Web créé qui envoie le rapport de blocage. Nous avons donc vidé complètement le code de courrier électronique de CrashRpt. Et au lieu de cela, nous avons dans notre système de suivi des bogues une section pour les accidents qui ont été soumis automatiquement lorsque des accidents se produisent.

Pour trouver votre problème:

J'essaierais peut-être de déboguer le code CrashRpt pour voir pourquoi il vous donne une boîte de dialogue de sauvegarde. Au lieu de cela, vous devriez simplement ouvrir votre client de messagerie par défaut. Vous avez peut-être une version plus ancienne de la bibliothèque ou les ressources de dialogue sont un peu gâchées. Le débogage du code vous le dira cependant.

MailReport est probablement appelé mais échoue.

Définissez un point d'arrêt dans le code CrashRpt d'origine dans CrashHandler.cpp juste après le DoModal:

 mainDlg.m_pUDFiles = &m_files;
   if (IDOK == mainDlg.DoModal())
   {
      //Put breakpoint here <---------
      if (m_sTo.IsEmpty() || 
          !MailReport(rpt, sTempFileName, mainDlg.m_sEmail, mainDlg.m_sDescription))
      {
         SaveReport(rpt, sTempFileName);
      }
   }

Vérifiez pourquoi MailReport n'est pas appelé. C'est soit la ressource de dialogue, soit votre m_sTo n'est pas renseigné, soit vous pouvez parcourir MailMsg.cpp pour voir où MAPI échoue.

Solution alternative:

Une solution facile, si vous trouvez ci-dessus que MailReport est appelé mais n'aboutit pas, consiste simplement à exécuter ShellExecute et à spécifier un mailto:

Vous pouvez même essayer d'utiliser la méthode MAPI, mais si cela échoue, mailto:

Autres conseils

Vous pouvez trouver la documentation CrashRpt, la FAQ et télécharger un nouveau CrashRpt v1.1 ici http: / /code.google.com/p/crashrpt/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top