我正在使用以下方法发送电子邮件:
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 个电子邮件地址。
在我的测试中,我注意到了两件事:
- 即使其中一封电子邮件不是实际的电子邮件(例如
fake_email_no_domain
),它也不会向任何收件人发送电子邮件 - 如果密件抄送列表的电子邮件地址不正确(例如
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]
向用户展示一个,我想提一下发生了一些不好的事情 - 如果我的密件抄送列表有 5 封电子邮件,但实际上只发送了 4 封电子邮件,因为第 5 封电子邮件不存在,那么在完成之后,我可以得到实际发送的电子邮件数量吗?我想在我的
flash[:notice]
. 我可以通过在迭代中实际调用传递方法而不是批量发送来获得这个数字,但如果没有发送一封电子邮件,我仍然不想增加计数。