Здесь smtp настройки по умолчанию для метода mail класса ActionMailer::Base
config/application.rbmodule 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.rbclass 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.rbResque::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]