Подтвердить что ты не робот

ArgumentError: SMTP Для адреса требуется отправить сообщение. Задайте сообщение smtp_envelope_to, to, cc или адресную книгу

У меня есть приложение с рельсами 4 со следующей конфигурацией почтовой программы:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { host: 'myhost.com' }
  config.action_mailer.perform_deliveries = true

  config.action_mailer.smtp_settings = {
    :enable_starttls_auto => true,
    :address            => 'smtp.myhost.com',
    :port               => 587,
    :domain             => 'myhost.com',
    :authentication     => :login,
    :enable_starttls_auto => false,
    :tls                  => false,
    :openssl_verify_mode  => 'none',
    :ssl => false,
    :user_name          => "myusername",
    :password           => "mypassword"
  }

Каждый раз, когда я пытаюсь отправить почту с установкой тестовой рассылки:

class TestMailer < ActionMailer::Base

  default :from => "[email protected]"

  def welcome_email
    mail(:to => "[email protected]", :subject => "Test mail", :body => "Test mail body")
  end
end

TestMailer.welcome_email.deliver

Я получил это исключение:

ArgumentError: SMTP Для адреса требуется отправить сообщение. Задавать сообщение smtp_envelope_to, to, cc или адрес адресной почты.

Возможно ли, что я забыл что-то установить? И я не могу найти вариант конфигурации для "smtp_envelope_to"

4b9b3361

Ответ 1

Сообщение об ошибке не о конверте SMTP, а об отправителе:

SMTP Для адреса требуется отправить сообщение

остальное - всего лишь общее сообщение. Что-то в вашем [email protected] не работает. Вы используете настоящий рабочий адрес? Если нет, попробуйте один.

Ответ 2

Если вы используете sidekiq + actionmailer. Будьте осторожны, отправляя электронную почту с помощью хэша. Я делал что-то вроде этого MyWorker.perform_async ( "var1", {email: '[email protected]', var2: 'test1234'})

Я ударил головой в течение нескольких часов, почему он выбрасывает вышеуказанную ошибку. Потому что в hash [: email] нет. Для получения электронной почты вам нужно использовать хэш [ "email" ]. Я не знаю, причина. Но это помогло мне избавиться от этой ошибки.

Ответ 3

Является ли :to => '[email protected]', как он находится в вашей уязвимой среде? Если это не жесткий адрес электронной почты, убедитесь, что переменная, содержащая адрес, не является пустой.

Вам не нужно явно указывать Mail::Message#smtp_envelope_to. Он может догадываться об этом у своих получателей, т.е. Mail::Message#destinations (до + cc + bcc), но он, похоже, не имеет.