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

我有一个带有以下邮件配置的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" } 

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

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

我有这个例外:

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

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

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

发送邮件需要SMTP To地址

其余的只是一个普遍的信息。 testmail@mymailaddress.com中的testmail@mymailaddress.com内容无效。 你使用真实的工作地址吗? 如果没有,请尝试一个。

如果你使用sidekiq + actionmailer。 使用哈希发送电子邮件时要小心。 我正在做这样的事情MyWorker.perform_async(“var1”,{email:’test@test.com’,var2:’test1234′})

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

:to => 'testmail@mymailaddress.com'在失败的环境中它是怎样的? 如果它不是硬编码的电子邮件地址,请确保包含转发地址的变量不为空。

您不必显式设置Mail::Message#smtp_envelope_to 。 它可以从收件人那里猜出来,即。 Mail::Message#destinations (to + cc + bcc),但它似乎没有任何。