이 문제를 다루는 데는 여러 가지 방법이 있지만 내 접근 방식은 항상 데이터베이스에서 직접 읽고 전자 메일을 ASP.NET 응용 프로그램과 별도로 보내는 완전히 다른 시간에 지정된 프로세스 나 서비스를 사용하는 것이 었습니다.
이상적인 대규모 응용 프로그램에서는 수신 측에서 MSMQ - Microsoft Message Queuing과 같은 별도의 프로세스를 사용합니다.
편집 :
OK, 그래서 (매우 부서지기 쉬운 것 때문에 난 강력하게 사용 억제 것) 장소의 몇 온라인 언급하지만, 기본적으로는 ASP를 만드는 작업이 포함되는 또 다른 방법이있다. NET webservice는 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: "[email protected]",
message: "this is a test message"
}),
dataType: "json",
success: function (data, textStatus, jqXHR) {
//Do success stuff
},
error: function (jqXHR, textStatus, errorThrown) {
//Do error stuff
}
});
이메일 전송 어쨌든 비동기 작업 본질적이다 - 왜 * 문제가 어디에서 일부 지연이 도입 *을합니까? –
이것은 조숙 한 최적화처럼 보입니다. 이메일에 관해서는 몇 초의 지연이 예상되며 어쨌든 발신자에서 수신자로 유선을 통해 이동해야합니다.길을 따라 약간의 네트워크 속도 저하가이 "지연"을 극복하기 위해 한 모든 작업을 쓸모 없게 만드는 데 필요한 모든 것입니다. 또한 * 고객 *이 약간의 지연을 도입한다는 점도 지적 할 가치가 있습니다 (Outlook은 새로운 메시지를보고 확인하고 몇 분 * 이전에 수신되었음을 확인합니다. PC가 오래되거나 바쁜/느림). – Alex
수신자 사서함에 들어가기까지 이메일이 오랫동안 걸릴지는 신경 쓰지 않습니다. 그것은 내가 걱정하는 전송 지연 자체입니다. 지연은 5 분 지연으로 이어지며 Enter 키를 누르면 함수가 복귀합니다. – Yaniv