我使用的是ASP.NET Web表单,
当用户提交页面时,会向许多人发送一封电子邮件,这会减慢邮寄的速度,
发送电子邮件的最佳方法是什么,而不会减慢页面的重新加载速度?
感谢
答案 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的更多信息。