ArgumentError:发送消息需要SMTP To地址.设置消息smtp_envelope_to,to,cc或bcc地址

bul*_*ric 24 ruby-on-rails actionmailer ruby-on-rails-4

我有一个带有以下邮件配置的rails 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"
  }
Run Code Online (Sandbox Code Playgroud)

每次我尝试发送带有测试邮件设置的邮件时:

class TestMailer < ActionMailer::Base

  default :from => "noreply@myhost.com"

  def welcome_email
    mail(:to => "testmail@mymailaddress.com", :subject => "Test mail", :body => "Test mail body")
  end
end

TestMailer.welcome_email.deliver
Run Code Online (Sandbox Code Playgroud)

我有这个例外:

ArgumentError:发送消息需要SMTP To地址.设置消息smtp_envelope_to,to,cc或bcc地址.

我有可能忘了要设置的东西吗?我找不到"smtp_envelope_to"的配置选项

Mio*_*tsu 27

错误消息不是关于SMTP信封,而是关于发件人:

发送邮件需要SMTP To地址

其余的只是一个通用的信息.你身上的东西testmail@mymailaddress.com不起作用.你使用真实的工作地址吗?如果没有,请尝试一个.

  • 我的失败是对一个smtp地址的压倒性的,因为它将它设置为no Oo (3认同)

小智 5

如果您使用sidekiq + actionmailer。使用哈希发送电子邮件时要小心。我正在做类似MyWorker.perform_async(“ var1”,{email:'test@test.com',var2:'test1234'})的操作

我撞了几个小时,为什么会抛出以上错误。因为在perform_menthod中,hash [:email]为零。您需要使用hash [“ email”]来接收电子邮件。我不知道原因。但这帮助我摆脱了这个错误。

  • 可能对offtopic感到抱歉,但是您必须使用hash ['email']的原因是归功于redis的序列化过程。Sidekiq创建JSON文档,它将自动将所有键转换为字符串。 (5认同)