gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:12:50 25 4
gpt4 key购买 nike

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

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

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

在此先感谢您提供的所有帮助!我显然遗漏了一些东西。

最佳答案

CrashRpt 对电子邮件的作用:

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

个人经历:

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

找到您的问题:

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

很可能正在调用 MailReport 但失败了。

在原CrashRpt code设置断点在 DoModal 之后的 CrashHandler.cpp:

 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 方法,但如果无法执行 mailto:

关于c++ - 如何在 CrashRpt 中配置电子邮件设置以发送故障转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com