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