4

true の場合、ユーザーにエラー メッセージが送信されます。誤った配信エラーが通知されない場合。

これを処理するための推奨される方法は何ですか?

4

4 に答える 4

6

アプリを本番環境に置いたばかりで、メールを送信しようとすると、ISP のメール サーバーが頻繁に「451 スプール ビジー」エラーを返します。

どちらの答えも私たちにとって良いものではありませんでした。ユーザーにエラーを返した場合、インフラストラクチャの問題を彼らに伝えていることになります。そうしないと、彼らは招待状、確認書、通知などを受け取ることができず、その理由は誰にもわかりません。

代わりに、delayed_job をセットアップして、常にメールを送信することにしました。自動的に再試行され、(データベースのジョブ キュー テーブルから) メッセージが蓄積されているかどうかを確認できます。(セットアップも非常に簡単でした。最も困難な部分は、ワーカー スレッドが実行されていることを確認することでした。これは、Monit 構成への簡単な追加でした。)

(ボーナス: これは私が作成した初期化子で、本番環境でメールを遅らせますが、開発とテストでは直接送信します: http://gist.github.com/178125 )

于 2009-09-01T06:58:11.853 に答える
3

メーラーのライフサイクルのある時点で、配信エラーに遭遇する可能性があります。

どちらかをお勧めします

  • raise_delivery_errors = true

    エラーをキャッチし、ユーザーに何らかのフィードバックを提供します

  • raise_delivery_errors = false # 何もキャッチせず、失敗を無視する

メーラーが行う内容に応じて、上記のいずれかを選択します。

于 2009-08-25T00:06:27.630 に答える
0

ローカル サーバーで postfix を実行する場合、電子メールが postfix に正常に送信される場合 (ほぼ常に発生するはずです)、問題はありません。

于 2011-11-22T02:34:15.793 に答える
0

少なくともユーザー (およびあなた自身) に、何か問題が発生したことを知らせる必要があります。そうしないと、ユーザー (およびあなた) は、配信が失敗したのか、メールがスパム フォルダーに入れられただけなのかわからなくなります。

多くのエラーが発生しない場合は、500 エラーが発生するまでそのままにしておくことができますが、これはユーザーにとって少し不快な場合があります。例外をキャッチしてログに記録し、ユーザーに再試行させることをお勧めします。

于 2009-08-25T02:31:09.660 に答える