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客戶端的異常?