この問題に対処する方法は無数にありますが、私のアプローチは常に、データベースから直接読み取り、ASP.NETアプリケーションとは独立して電子メールを送信する完全に異なるタイミングのプロセスまたはサービスを使用することでした。
理想的な大規模アプリケーションでは、MSMQのような別のプロセスを使用します-受信側でのMicrosoftメッセージキューイング。
編集:
OK、それでいくつかの場所でオンラインで言及されている別のアプローチがあります(それは非常に壊れやすいので使用することを強くお勧めしません)が、基本的にそれは電子メールを送信するためのコードを含むASP.NETWebサービスを作成することを含みますjQueryを使用してそのサービスを呼び出す。したがって、最終的には、次のように宣言されたWebサービスになります。
[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
}
});