以下の方法でメールを送信しています。
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 つの電子メールが送信されない場合でもカウントを増やしたくありません。