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

Best way to send an email from a .NET application?

提问人:Matt Hanson 提问时间:9/12/2008 最后编辑:NIMISHANMatt Hanson 更新时间:10/9/2018 访问量:4763

问:

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

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

.net vb.net 电子邮件

评论


答:

3赞 Esteban Araya 9/12/2008 #1

您需要使用 SmtpClient 类,如此处所述。
没有陷阱 - 发送电子邮件非常简单。

评论

3赞 Haoest 9/16/2008
如果您需要使用 smtp 向 1000 个用户发送邮件,它的可扩展性如何?您是否必须编写额外的代码来减慢速度,以便 smtp 服务器不会被淹没?
1赞 Eric Z Beard 9/12/2008 #2

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

2赞 Brannon 9/12/2008 #3

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

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

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

评论

0赞 rpetrich 9/12/2008
语法是mailto:[email protected]?subject=Hello&body=World!参数必须是 url 转义的
6赞 Dr8k 9/12/2008 #4

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

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

<system.net>
   <mailSettings>
      <smtp deliveryMethod="Network" from="[email protected]">
         <network host="smtp.somewhere.com.au" />
      </smtp>
   </mailSettings>
</system.net>

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

编辑:对我的代码示例略有更正。

评论

0赞 Esteban Araya 9/12/2008
嘿!你能正确拼写我的名字吗?谢谢,埃斯特万
2赞 Byron Ross 9/12/2008 #5

你提到你正在使用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,所以我会检查。

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

0赞 Robbo 9/18/2008 #6

您需要使用 SmtpClient 类,如此处所述。 没有陷阱 - 发送电子邮件非常简单。

详尽System.Net.Mail 常见问题解答位于此处。