2017-12-21 4 views
0

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의 해결 방법으로 인해

+1

코드에 빈 catch 블록을 넣지 않아야합니다. 실제 코드에서 제거하고 질문에서 제거하십시오. 또한 [SmtpClient] (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient (v = vs.110) .aspx) 대신 WebMail 클래스를 사용하는 이유는 무엇입니까? – mason

+0

하나님의 사랑을 위해 제발, 당신이 생명의 은인이라고 대답하십시오. – Sicae

+0

나는 그 질문에 방금 놓은 실제 코드에서 try catch를 제거했다. 그리고 웹 메일이 내부적으로 SmtpClient를 사용하는 것처럼 문제가 될 것이라고 저는 믿지 않았습니다. – Sicae

답변

1

웹 메일 클래스는 ASP.NET 웹 페이지 문맥에서 사용하기위한 것입니다 테스트에서 왼쪽 된 추가 라인에 거짓 긍정적이었다. 해당 컨텍스트 외부에서 사용될 때 필요한 모든 것이 없을 것이므로 NullReferenceException이 발생합니다.

대신 SmtpClient 클래스를 사용하십시오.