如何在 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 发送电子邮件?
通过 Microsoft 365 SMTP 发送电子邮件时如何使用自定义显示名称? (以 PHP Swift Mailer 为例)