2008 年 Jeff 在 crashing responsibly 上发表了一篇文章.本着这种精神,我试图在我的崩溃错误对话框中添加一个“发送错误报告”按钮。这个想法是用户可以轻松地发送完整的错误报告,其中已经包括版本信息、操作系统信息、堆栈跟踪......这些信息应该放在邮件正文或附件文件中。
不幸的是,从 .NET 应用程序发送这样一封电子邮件似乎并不简单:
- System.Net.Mail这不是我想要的:我不能确定是否可以在所有环境中建立到 SMTP 服务器的连接,并且我不想让我的用户承担配置本地 SMTP 主机名和端口的负担。相反,我只想使用预先编写的消息启动系统上现有的电子邮件软件。
- 使用操作系统 open a "mailto:" URL可行,但是对于可以通过这种方式传递的数据量存在烦人的限制。此外,mailto spec 似乎并不真正支持附件。 .
- mapi.dll可能会做我想做的事,如图所示 codeproject article ,但我在别处读到 mapi.dll is fundamentally incompatible with .NET导致随机崩溃。
有没有人找到安全可靠的解决方案来做到这一点?
最佳答案
我们已经通过创建一个简单的 WCF Web 服务解决了这个问题,该服务获取堆栈跟踪、压缩日志等,客户端将其发布到它,然后让 Web 服务服务器发送电子邮件。 这样您就不必在客户端拥有 SMTP 身份验证信息,也不必依赖用户通过他们的电子邮件客户端提交错误报告。
我们现在甚至通过此网络服务定期压缩客户端日志并将其提交到后端服务器,并分析这些日志以在客户端问题成为客户端问题之前先发制人地检测到任何客户端问题
关于c# - 如何从 .net 错误对话框发送错误报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500033/