如何在 CrashRpt 中配置电子邮件设置以发送故障转储?

Posted

技术标签:

【中文标题】如何在 CrashRpt 中配置电子邮件设置以发送故障转储?【英文标题】:How do you configure the email settings in CrashRpt to send the crash dump? 【发布时间】:2008-10-20 03:35:44 【问题描述】:

在阅读了 this discussion 和 this discussion 关于使用 CrashRpt 生成故障转储并将其通过电子邮件发送给开发人员之后,我一直很难找到任何说明/教程来配置库使用的电子邮件设置以发送电子邮件。

当您调用 install() 函数来初始化 CrashRpt 时,您指定了要将故障转储发送到的电子邮件地址,但是 CrashPrt 库如何知道如何将电子邮件发送到该地址?图书馆不需要知道每个用户的电子邮件客户端设置吗?

当我的代码发生致命崩溃时,会弹出 CrashRpt 对话框,当我输入我的电子邮件地址并单击发送按钮时,它会将我带到一个“保存文件”对话框,我可以在其中保存压缩包和Install() 函数中指定的帐户永远不会收到电子邮件。

提前感谢您的任何帮助!我显然错过了一些东西。

【问题讨论】:

【参考方案1】:

CrashRpt 对电子邮件的作用:

电子邮件系统只是使用 MAPI 来发送您的电子邮件。如果您有一个并且支持 MAPI,它将尝试使用您的默认邮件客户端。查看 MailMsg.cpp 了解详细信息。

个人经历:

在我公司对 CrashRpt 的使用中,我们对其进行了一些修改,以调用我们创建的提交崩溃报告的 Web 服务。因此,我们完全从 CrashRpt 中删除了电子邮件代码。相反,我们在错误跟踪系统中有一个崩溃部分,当崩溃发生时自动提交。

要找到您的问题:

我可能会尝试调试 CrashRpt 代码,看看为什么它会给你一个保存对话框。相反,它应该只打开您的默认邮件客户端。也许你有一个旧版本的库,或者对话框资源有点乱。调试代码会告诉你这一点。

很可能 MailReport 被调用但失败了。

在原来的CrashRpt code的CrashHandler.cpp中设置断点就在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);
      
   

检查为什么没有调用 MailReport。它要么是对话框资源,要么是您的 m_sTo 未填充,或者您可以单步执行 MailMsg.cpp 并查看 MAPI 失败的位置。

替代解决方案:

如果您在上面发现 MailReport 被调用但没有成功,一个简单的解决方法是只执行 ShellExecute 并指定一个 mailto:

您甚至可以尝试使用 MAPI 方法,但如果无法发送邮件:

【讨论】:

【参考方案2】:

您可以在此处http://code.google.com/p/crashrpt/ 找到 CrashRpt 文档、常见问题解答并下载新的 CrashRpt v1.1

【讨论】:

以上是关于如何在 CrashRpt 中配置电子邮件设置以发送故障转储?的主要内容,如果未能解决你的问题,请参考以下文章

在 Xampp 中将 Gmail 配置为 SMTP 以发送邮件 - 出现错误。为啥?

如何配置 WAMP (localhost) 以使用 Gmail 发送电子邮件?

如何设置 Teamcity 以通过电子邮件发送发行说明?

如何配置 Flask Mail 以使用 Postfix

通过 Microsoft 365 SMTP 发送电子邮件时如何使用自定义显示名称? (以 PHP Swift Mailer 为例)

如何配置 AWS ELB 以阻止某些 IP 地址? (已知的垃圾邮件发送者)[关闭]