hangfire를 사용하지 않을 때이 방법을 사용하여 전자 메일을 보낼 수 있습니다.HangFire Queued Emails "Succeeding"하지만 보내지 않음
이 메서드가 hangfire에서 호출되면 성공한 것으로 표시되지만 전자 메일은 보내지 않습니다. 실제 이메일 주소가 같은
BackgroundJob.Schedule(
() => Email(Subject),
TimeSpan.FromMinutes(1)
);
public void Email(string Subject)
{
try
{
//Initialize WebMail
WebMail.SmtpServer = "relay.example.com";
WebMail.SmtpPort = 587;
WebMail.SmtpUseDefaultCredentials = false;
WebMail.UserName = "xxxx";
WebMail.Password = "xxxx";
WebMail.From = "\"Reports\" <[email protected]>";
//Send Email
WebMail.Send(to: "[email protected]",
subject: Subject,
body: "Test Email"
);
}
catch (Exception e)
{
}
}
사용자 이름, 암호 및 릴레이 서비스
는 보안을 위해 제거되었습니다.try/catch 블록을 제거하고 제거하여 오류가 있는지 확인합니다. 일반적으로 이전과 같이 성공하지만 경우에 따라 다음 오류가 발생합니다.
System.NullReferenceException
Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.WebPages.Scope.AspNetRequestScopeStorageProvider.get_RequestScopeInternal()
at System.Web.WebPages.Scope.AspNetRequestScopeStorageProvider.get_CurrentScope()
at System.Web.Helpers.WebMail.set_SmtpServer(String value)
at Email(String Subject)
다음 유형 통과를 허용하는 버전을 시도했습니다.
BackgroundJob.Schedule<WebMail>(
() => Email(Subject),
TimeSpan.FromMinutes(1)
);
그러나 정적 유형 사용에 대한 컴파일러 오류가 발생합니다.
도움 주셔서 감사합니다.
편집 :
더 나은 옵션을 선택하십시오. 그러나 나는 건방진 일을 발견했다. 나는 실제로 전자 메일을 보내려는 페이지에 대한 게시물 요청을 시작하는 메소드를 작성하여이 작업을 수행 할 수있었습니다. 반면 Hangfire는 게시 요청을 활성화합니다.
편집 : NVM의 해결 방법으로 인해
코드에 빈 catch 블록을 넣지 않아야합니다. 실제 코드에서 제거하고 질문에서 제거하십시오. 또한 [SmtpClient] (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient (v = vs.110) .aspx) 대신 WebMail 클래스를 사용하는 이유는 무엇입니까? – mason
하나님의 사랑을 위해 제발, 당신이 생명의 은인이라고 대답하십시오. – Sicae
나는 그 질문에 방금 놓은 실제 코드에서 try catch를 제거했다. 그리고 웹 메일이 내부적으로 SmtpClient를 사용하는 것처럼 문제가 될 것이라고 저는 믿지 않았습니다. – Sicae