true の場合、ユーザーにエラー メッセージが送信されます。誤った配信エラーが通知されない場合。
これを処理するための推奨される方法は何ですか?
true の場合、ユーザーにエラー メッセージが送信されます。誤った配信エラーが通知されない場合。
これを処理するための推奨される方法は何ですか?
アプリを本番環境に置いたばかりで、メールを送信しようとすると、ISP のメール サーバーが頻繁に「451 スプール ビジー」エラーを返します。
どちらの答えも私たちにとって良いものではありませんでした。ユーザーにエラーを返した場合、インフラストラクチャの問題を彼らに伝えていることになります。そうしないと、彼らは招待状、確認書、通知などを受け取ることができず、その理由は誰にもわかりません。
代わりに、delayed_job をセットアップして、常にメールを送信することにしました。自動的に再試行され、(データベースのジョブ キュー テーブルから) メッセージが蓄積されているかどうかを確認できます。(セットアップも非常に簡単でした。最も困難な部分は、ワーカー スレッドが実行されていることを確認することでした。これは、Monit 構成への簡単な追加でした。)
(ボーナス: これは私が作成した初期化子で、本番環境でメールを遅らせますが、開発とテストでは直接送信します: http://gist.github.com/178125 )
メーラーのライフサイクルのある時点で、配信エラーに遭遇する可能性があります。
どちらかをお勧めします
メーラーが行う内容に応じて、上記のいずれかを選択します。
ローカル サーバーで postfix を実行する場合、電子メールが postfix に正常に送信される場合 (ほぼ常に発生するはずです)、問題はありません。
少なくともユーザー (およびあなた自身) に、何か問題が発生したことを知らせる必要があります。そうしないと、ユーザー (およびあなた) は、配信が失敗したのか、メールがスパム フォルダーに入れられただけなのかわからなくなります。
多くのエラーが発生しない場合は、500 エラーが発生するまでそのままにしておくことができますが、これはユーザーにとって少し不快な場合があります。例外をキャッチしてログに記録し、ユーザーに再試行させることをお勧めします。