从.NET应用程序发送电子邮件的最佳方式?

时间:2008-09-11 23:38:00

标签: .net vb.net email

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

最好的方法是什么,是否有任何“陷阱”需要注意?

6 个答案:

答案 0 :(得分:6)

您不必担心客户端凭据,只需使用Esteban建议的SmtpClient即可。您将需要用户在配置时提供有效的Smtp服务器URL,但大多数ISP允许匿名smtp,只要用户在其网络(即其客户端)中放入url,那么大多数ISP都会人们不会有任何问题。

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

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

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

编辑:稍微纠正我的代码示例。

答案 1 :(得分:3)

您需要按照 here 概述使用SmtpClient类。
没有陷阱 - 发送电子邮件就像它一样容易。

答案 2 :(得分:2)

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

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

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

答案 3 :(得分: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一起检查了许可证,他说使用他们的代码是好的,但YMMV,所以我会检查。

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

答案 4 :(得分:1)

您可能还想查看第三方aspNetEmail库,该库在System.Net.Mail为您提供的功能上提供了许多有用的功能。

答案 5 :(得分:0)

  

您需要使用概述为here的SmtpClient类。   没有陷阱 - 发送电子邮件就像它一样容易。

广泛的System.Net.Mail FAQ位于here