4

以下の方法でメールを送信しています。

class Communicate < ActionMailer::Base
  def message(sub,msg,people)
    subject    sub
    bcc        people
    from       'my_email.s@gmail.com'
    sent_on    Time.now

    body       :greeting => msg
  end
end

bcc には 4 つまたは 5 つの電子メール アドレスが含まれています。

テスト中に、次の 2 つのことに気付きました。

  • 電子メールの 1 つでも実際の電子メールではない場合 (たとえばfake_email_no_domain)、どの受信者にも電子メールを送信しないこと
  • bcc リストに不適切な電子メール アドレス (たとえば、nonexistent@gmail.com) が含まれている場合でも、電子メールは他の受信者に送信されますが、ログにエラーがスローされます。

どちらのシナリオでも、スローされるエラーは次のとおりです。

Redirected to http://localhost:3000/
Completed in 2601ms (DB: 1) | 302 Found [http://localhost/notifications]

    [2010-08-04 00:49:00] ERROR Errno::ECONNRESET: Connection reset by peer
        /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:56:in `eof?'
        /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:56:in `run'
        /usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

質問:

  • このエラーをキャッチする方法はありますか? ユーザーに表示しflash[:notice]ていますが、何か悪いことが起こったことを伝えたいと思います
  • BCC リストに 5 通のメールがあり、5 番目のメールが存在しなかったために 4 通しか送信されていない場合、すべての処理が完了したら、実際に送信されたメールの数を取得できますか? その番号を に表示したいと思いflash[:notice]ます。一括で送信するのではなく、実際に反復で配信メソッドを呼び出すことでこの数を取得できますが、1 つの電子メールが送信されない場合でもカウントを増やしたくありません。
4

2 に答える 2

2

次の行を追加またはコメント解除してconfig/environments/development.rb 、サーバーを再起動します。

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false

developmentfor productionadd 行をチェックすると仮定しますconfig/environments/production.rb

于 2010-08-04T05:12:23.407 に答える