Как считать smtp настройки ActionMailer в error_handler?

Здесь smtp настройки по умолчанию для метода mail класса ActionMailer::Base
config/application.rb
module MyApp
  class Application < Rails::Application
...
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
        enable_starttls_auto: true,
        address: 'smtp.yandex.ru',
        port: 587,
....
        user_name: xxxx
        password: yyy
    }
  end


Код какого нибудь mailera. В некотором методе настройки smtp хитрые, взятые случайным образом откуда нибудь из базы. Отсылаем асинхронным способом:
mailer/some_mailer.rb
class SomeMailer < ActionMailer::Base
include Resque::Mailer
...
  def send_feedback opts
...
  	mail(to: to, subject: 'subj',
  		delivery_method_options: get_random_smtp_settings) 
  end
end


Допустим аккаунт заблочили, пытаюсь своевременно узнать об этом. Хочу узнать какой аккаунт сдох. Пытаюсь отловить ошибку и послать сообщение администратору о произошедшей ошибке. Хочу знать логин и пароль акканута с которого пытаюсь послать сообщение.
config/initializers/resque_mailer.rb
Resque::Mailer.error_handler = lambda { |mailer, message, error, action, args|
if error.is_a?(Resque::TermException)
Resque.enqueue(mailer, action, *args)
else
SMS.send_error :admin, {error: error.message, error_class: error.class, smtp_login: ????, smtp_pass: ????}
raise error
end

Получается считать только настройки по умолчанию:
mailer.smtp_settings[:user_name]
mailer.smtp_settings[:password]
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы