我正在使用 ASP.NET Web 表单,
当用户提交页面时,会向许多人发送一封电子邮件,这会减慢回发速度,
在不减慢页面重新加载速度的情况下发送电子邮件的最佳方式是什么?
谢谢
您可以使用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.
}
这是 MSDN 上文档的链接。
我发现除非您正在构建一个非常小的网站,否则最好从单独的 Windows 服务发送邮件。
例如,您的 Web 前端将要发送的邮件记录在数据库中。这有一个很好的副作用,允许您还开发一个已发送的文件夹、发件箱等。您的 Windows 服务会轮询邮件表并进行实际发送。
发送邮件可能会导致很多异常,可能会很慢,可能会超时,主机进程会被占用等。在后台处理它在许多情况下都很有意义。
这是有关Windows 服务的更多信息。