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の回避策は、原因
コードに空のキャッチブロックを置くことはほとんどありません。実際のコードから削除し、質問から削除します。また、[SmtpClient](https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient(v = vs.110).aspx)の代わりにWebMailクラスを使用しているのはなぜですか? – mason
神の休暇を愛してください、あなたが命の恩人であると答えてください。 – Sicae
私は実際のコードでtry catchを削除しました。そして私はWebmailが内部的にSmtpClientを使用しているので問題になっているとは思わなかった。 – Sicae