ruby-on-rails-4 - Rails 电子邮件传送错误检查 - Deliver_now

标签 ruby-on-rails-4 error-handling try-catch email-delivery

我应该如何包装 deliver_now方法调用,以便我们可以捕获在交付时发生的错误?

@user = User.new(user_params)
if @user.valid?
  MyMailer.user_email(@user).deliver
  # hmmm....  how do we catch if the email is not sent?  
else
  ...
end

最佳答案

确保您在应用程序配置中设置了config.action_mailer.raise_delivery_errors = true。然后您可以使用救援 block 捕获异常。像这样的事情:

@user = User.new(user_params)
if @user.valid?
  begin
    MyMailer.user_email(@user).deliver
  rescue StandardError => e
    # do something with the messages in exception object e
    flash[:error] = 'Problems sending email'
  end
else
  ...
end

关于ruby-on-rails-4 - Rails 电子邮件传送错误检查 - Deliver_now,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999581/

相关文章:

Javascript fetch, catch 永远运行

c# - 有没有比在整个应用程序代码中散布 try/catch 更优雅的错误处理方法?

ruby-on-rails - 运行 gem install pg -v '0.15.1' 时出错

ruby-on-rails-4 - Ruby on Rails 无法加载此类文件 -- selenium-webdriver 错误

forms - Spring 形式 :errors customization

Spring Batch如何使用ItemReadListener

python - 用python gtk键盘中断?

ruby-on-rails - 有一个基于 Rails 中的选择的动态表单

arrays - 使用 Rails 4+ 和 PostgreSQL 数组检查非空数组

error-handling - Apache尝试提供noindex.html,但是403的错误处理程序设置是否不同?