Итак, я почти завершил настройку почтовой программы в своем приложении на Rails, но я не могу понять одну из частей информации на https://guides.rubyonrails.org/action_mailer_basics.html.
В соответствии с этим руководством вы можете указать собственную опцию smtp_settings
, чтобы отправлять почту, например:
def welcome_email
smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'example.com',
user_name: 'myfromemail@example.com',
password: "myPassword",
authentication: :plain,
enable_starttls_auto: true
}
mail(to: "destination@example.com",
subject: "Test Notification",
smtp_settings: smtp_settings
)
end
но на самом деле это не работает. Тот же самый пример внизу использует delivery_method
и передает хеш точно так же, как я использовал в этом примере.
Если я пытаюсь использовать метод .deliver
в почтовой программе, я получаю следующую ошибку:
Errno :: ECONNREFUSED (соединение отклонено - connect (2) для "localhost"
порт 25)
Это почти как полное игнорирование настроек smtp, которые я передал функции mail
. Что я тут не так делаю?
Я посмотрел примеры из Как отправлять электронные письма с несколькими динамическими SMTP-сообщениями с помощью Actionmailer / Ruby on Rails , но этот метод не работает:
delivery_method.settings.merge!(smtp_settings)
потому что delivery_method
на самом деле :smtp
и это невозможно.
Опция delivery_method
, кажется, работает, но мне нужно передать дополнительные вещи, такие как аутентификация, SSL / TLS и даже порт. Похоже, они не предлагаются опцией delivery_method
.
Попытка реализовать одно из решений, приведенных в этом посте, приводит к ошибке:
MyMailer.delivery_method.settings.merge!(smtp_settings)
Traceback (most recent call last):
1: from (irb):3
NoMethodError (undefined method `settings' for :smtp:Symbol)