Có thể xảy ra lỗi khác tùy thuộc vào phương pháp phân phối bạn sử dụng. Trong trường hợp bạn đang sử dụng dịch vụ của Amazon SES qua đá quý AWS-ses, thêm các lỗi sau đây để mảng của bạn
AWS::SES::ResponseError
Bạn có thể sử dụng một số mã như thế này để bắt lỗi
# some_utility_class.rb
# Return false if no error, otherwise returns the error
def try_delivering_email(options = {}, &block)
begin
yield
return false
rescue EOFError,
IOError,
TimeoutError,
Errno::ECONNRESET,
Errno::ECONNABORTED,
Errno::EPIPE,
Errno::ETIMEDOUT,
Net::SMTPAuthenticationError,
Net::SMTPServerBusy,
Net::SMTPSyntaxError,
Net::SMTPUnknownError,
AWS::SES::ResponseError,
OpenSSL::SSL::SSLError => e
log_exception(e, options)
return e
end
end
# app/controller/your_controller.rb
if @foo.save
send_email
...
private
def send_email
if error = Utility.try_delivering_email { MyMailer.my_action.deliver_now }
flash('Could not send email : ' + error.message)
end
end
Nguồn
2016-04-22 17:37:25