Rails Ошибка проверки доставки электронной почты - delivery_now

Как я должен обернуть 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

1 ответ

Решение

Убедитесь, что у вас есть config.action_mailer.raise_delivery_errors = true установить в конфиге вашего приложения. Тогда вы можете ловить исключения с помощью спасательного блока. Что-то вроде этого:

@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
Другие вопросы по тегам