7

我正在开发一个 Windows 窗体 (.NET 3.5) 应用程序,它有一个内置的异常处理程序来捕获可能出现的任何(天堂禁止的)异常。我希望异常处理程序能够提示用户单击Send Error Report按钮,这将导致应用程序向我的 FogBugz 电子邮件地址发送电子邮件。

做到这一点的最佳方法是什么,是否有任何“陷阱”需要注意?

4

6 回答 6

6

您不必担心客户端凭据,只需按照 Esteban 的建议使用 SmtpClient。您将需要用户在配置时提供有效的 Smtp 服务器 url,但大多数 ISP 允许匿名 smtp,前提是您在他们的网络(他们的客户端之一)上 - 只要用户输入他们的 ISP smptp 服务器的 url,那么大多数人们不会有任何问题。

注意:.config 文件中有一个预定义部分用于存储 SmtpClient 对象的配置选项。如果您将设置放在那里,则发送电子邮件时无需在代码中明确设置任何内容。该部分的示例如下:

<system.net>
   <mailSettings>
      <smtp deliveryMethod="Network" from="stuff@somewhere.com.au">
         <network host="smtp.somewhere.com.au" />
      </smtp>
   </mailSettings>
</system.net>

用户名和密码是可选的。Intellisense 适用于配置文件的这些部分。

编辑:对我的代码示例进行轻微修正。

于 2008-09-12T00:40:24.607 回答
3

您需要使用此处概述的 SmtpClient 类。
没有陷阱 - 发送电子邮件就这么简单。

于 2008-09-11T23:43:27.910 回答
2

在受控环境中,使用 SmtpClient 将是答案。但是在用户的机器上,您需要一个 SMTP 服务器来发送。

您可以提示用户输入他们的 SMTP 凭据,但我认为这对您的情况不切实际。作为用户,我不想将我的 SMTP 凭据提供给随机应用程序(想想垃圾邮件)。您也不想将自己的 SMTP 凭据硬编码到应用程序中,恶意用户嗅探这些凭据并使用您的服务器发送垃圾邮件是微不足道的。

理想情况下,您将能够使用用户的邮件代理来发送电子邮件。我在想您可能能够制定和执行 mailto: URL,但我不确定您是否能够指定邮件的正文或任何附件。

于 2008-09-11T23:48:53.577 回答
2

你提到你正在使用 Fogbugz。

试试http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722http://www.fogcreek.com/FogBugz/blog/post/C-wrapper-for -the-FogBugz-API.aspx?isl=59722

周围有一些示例代码,我认为在您的 FB 安装目录中。我向 Michael Pryor re: license 检查过,他说可以使用他们的代码,但是 YMMV,所以我会检查一下。

它提供了一个很好的起点。

于 2008-09-12T01:18:38.650 回答
1

您可能还想查看第 3 方aspNetEmail库,它提供了许多有用的功能,超出了 System.Net.Mail 为您提供的功能。

于 2008-09-11T23:48:44.107 回答
0

您需要使用此处概述的 SmtpClient 类。没有陷阱 - 发送电子邮件就这么简单。

广泛的System.Net.Mail 常见问题解答位于此处

于 2008-09-18T10:39:23.680 回答