9
A
回答
3
2
ThoughtBot上的这篇文章总结了所有可能的SMTP异常,并为您提供了处理所有这些异常的相当优雅的方法。
http://robots.thoughtbot.com/post/159806037/i-accidentally-the-whole-smtp-exception
以下是可能的例外:
SMTP_SERVER_ERRORS = [TimeoutError,
IOError,
Net::SMTPUnknownError,
Net::SMTPServerBusy,
Net::SMTPAuthenticationError]
SMTP_CLIENT_ERRORS = [Net::SMTPFatalError, Net::SMTPSyntaxError]
3
我们发现这个名单非常有效的,你可能要重新对标准误差:
[ EOFError,
IOError,
TimeoutError,
Errno::ECONNRESET,
Errno::ECONNABORTED,
Errno::EPIPE,
Errno::ETIMEDOUT,
Net::SMTPAuthenticationError,
Net::SMTPServerBusy,
Net::SMTPSyntaxError,
Net::SMTPUnknownError,
OpenSSL::SSL::SSLError
]
注我没有包含Net::SMTPFatalError
,因为它通常是一个永久性的失败(如列入黑名单的电子邮件地址)。
0
根据您使用的传输方式,可能出现更多错误。如果你是通过AWS-SES宝石使用Amazon SES服务,添加下面的错误给阵列
AWS::SES::ResponseError
你可以使用一些代码,这样搭上了错误
# 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
相关问题
- 1. 哪个Asp.net异常可以做什么?
- 2. 有什么办法可以启动异常的Ruby调试器?
- 3. 动作过滤器异常
- 4. 什么在角2异步验证器可以通过观测
- 5. 您可以通过邮件标题发送回复邮件吗?
- 6. 什么是可以通过SSIS
- 7. 我可以通过什么来打开?
- 8. 是否可以通过smtp通过bash脚本发送邮件?
- 9. Java邮件异常
- 10. elmah - 无法通过电子邮件发送异常
- 11. 无法通过詹金斯发送邮件,获得异常
- 12. 通过电子邮件通过httphandler的异常详细信息asp.net
- 13. 这个插件为什么可以通过ajax上传文件?
- 14. 我可以遏制来自log4j的异常电子邮件吗?
- 15. 为什么抛出异常的函数没有通过function_name.should.throw(error)?
- 16. Ruby Enumerator - 为什么以异常结束?
- 17. 为什么我收到以下异常
- 18. 什么可能导致主键异常?
- 19. 为什么.NET异常是可变的?
- 20. 为什么异常是可迭代的?
- 21. 扔什么异常?
- 22. 什么样的软件库可以通过编程创建photomosaics?
- 23. 有没有什么办法可以通过cs文件搜索
- 24. 处理异常IN动作过滤器
- 25. 为什么我得到异常异常?
- 26. 异常处理:什么异常提出
- 27. 什么是静态异常检查和动态异常检查?
- 28. 异常邮件检测
- 29. 通过邮件
- 30. 什么时候可以返回WCF客户端的异常?