有无数种方法可以解决这个问题,但我的方法一直是使用完全不同的定时进程或服务,它可以直接从数据库中读取数据,并独立于 ASP.NET 应用程序发送电子邮件。
在理想的大型应用程序中,您将在接收端使用带有 MSMQ - Microsoft 消息队列之类的单独进程。
编辑:
好的,所以在网上有几个地方提到了另一种方法(我强烈反对使用它,因为它非常脆弱),但基本上它涉及创建一个 ASP.NET 网络服务,其中包含您发送电子邮件的代码和使用 jQuery 调用该服务。所以你最终会得到一个像这样声明的网络服务
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class EmailSender : System.Web.Services.WebService
{
[WebMethod]
public void SendEmail(string email, string message)
{
//Send my email
}
}
在提交或表单回发时,您会按照这些方式调用它。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8;",
url: "EmailSender.asmx",
data: JSON.stringify({ email: "mail@email.com",
message: "this is a test message"
}),
dataType: "json",
success: function (data, textStatus, jqXHR) {
//Do success stuff
},
error: function (jqXHR, textStatus, errorThrown) {
//Do error stuff
}
});