从.NET应用程序发送电子邮件的最佳方法是什么?

7
我正在开发一个Windows Forms (.NET 3.5)应用程序,它有一个内置的异常处理程序来捕获任何可能出现的异常。我希望异常处理程序能够提示用户点击“发送错误报告”按钮,然后应用程序会发送一封电子邮件到我的FogBugz电子邮件地址。
最好的方法是什么?需要注意哪些问题?
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>

用户名和密码是可选的。智能感知适用于配置文件中的这些部分。

编辑:我的代码示例有轻微更正。


嘿!你能正确拼写我的名字吗?谢谢,Esteban。 - Esteban Araya

3

您需要使用SmtpClient类,如此处所述(点击此处)
没有什么需要特别注意的地方——发送电子邮件就是这么简单。


3
如果你需要通过SMTP给1000个用户发送邮件,这种方法的可扩展性如何?你需要编写额外的代码来减缓发送速度,以避免SMTP服务器被淹没吗? - Haoest

2
在受控环境下,使用SmtpClient是最好的选择。但在用户的计算机上,您需要一个SMTP服务器来发送邮件。
您可以提示用户提供他们的SMTP凭据,但我认为这对您来说不切实际。作为用户,我不想向随意的应用程序提供我的SMTP凭据(考虑垃圾邮件)。您也不希望将自己的SMTP凭据硬编码到应用程序中,因为恶意用户很容易嗅探这些凭据并使用您的服务器发送垃圾邮件。
理想情况下,您应该能够使用用户的邮件代理程序发送电子邮件。我认为您可以制定并执行mailto:URL,但我不确定是否能够指定消息的正文或任何附件。

语法为mailto:address@example.com?subject=Hello&body=World! 参数必须进行URL转义。 - rpetrich

2

1

你可能还想查看第三方aspNetEmail库,它提供了比System.Net.Mail更多有用的功能。


0
你需要按照这里所述使用SmtpClient类。发送电子邮件非常简单,没有什么需要注意的地方。 System.Net.Mail FAQ详细介绍了相关内容,可以在这里找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接