2017-12-21 20 views
0

hangfireを使用していないときの方法でメールを送信できます。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) 
     ); 

ただし、静的型の使用に関するコンパイラエラーがスローされます。

ありがとうございました。

EDIT:より良いオプションに

まだ開いています。しかし、私は周りの素敵な仕事を見つけた。私は実際に電子メールを送信するためのページへの投稿要求を起動するメソッドを作成することで、これを動作させることができました。ハングファイアは投稿要求をアクティブ化するだけですが。

EDIT:NVMの回避策は、原因

+1

コードに空のキャッチブロックを置くことはほとんどありません。実際のコードから削除し、質問から削除します。また、[SmtpClient](https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient(v = vs.110).aspx)の代わりにWebMailクラスを使用しているのはなぜですか? – mason

+0

神の休暇を愛してください、あなたが命の恩人であると答えてください。 – Sicae

+0

私は実際のコードでtry catchを削除しました。そして私はWebmailが内部的にSmtpClientを使用しているので問題になっているとは思わなかった。 – Sicae

答えて

1

のWebMailクラスはASP.NET Webページのコンテキストでの使用のために意図されたテストから残された余分なラインに偽陽性でした。そのコンテキスト外で使用すると、おそらく必要なものがすべてないので、NullReferenceExceptionが発生します。

代わりにSmtpClientクラスを使用してください。

関連する問題