如何在AsP.NET的后台发送电子邮件?

时间:2010-05-19 02:32:10

标签: asp.net email sendmail

我使用的是ASP.NET Web表单,

当用户提交页面时,会向许多人发送一封电子邮件,这会减慢邮寄的速度,

发送电子邮件的最佳方法是什么,而不会减慢页面的重新加载速度?

感谢

2 个答案:

答案 0 :(得分:7)

您可以使用 System.Net.Mail.SmtpClient 类使用 SendAsync()方法发送电子邮件。

var smtpClient = new SmtpClient();
var message = new MailMessage(fromAddress, toAddress, subject, body);
smtpClient.SendCompleted += new SendCompletedEventHandler(OnSendCompletedCallback);
smtpClient.SendAsync(message, null); // Null Or pass a user token to be send when the send is complete

如果您需要在异步发送完成后执行一些额外的操作,您也可以订阅SmtpClient的 SendCompleted 事件。

private void OnSendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
     // Handle the callback if you need to do anything after the email is sent.
}

Here是MSDN上文档的链接。

答案 1 :(得分:2)

我发现除非您构建一个非常小的网站,否则最好从单独的Windows服务发送邮件。

例如,您的Web前端会记录要在数据库中发送的邮件。这有一个很好的副作用,允许你也开发发送文件夹发件箱等。你的Windows服务轮询邮件表并进行实际发送。

发送邮件可能会导致许多异常,可能会很慢,可能会超时,主机进程被收集等等。在后台处理它在很多情况下都很有意义。

以下是有关Windows Services的更多信息。