我有一个带有以下邮件程序配置的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 < 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
我遇到了这个例外:
ArgumentError:发送邮件需要SMTP To地址。组 消息smtp_envelope_to,to,cc或bcc地址。
我有可能忘记设定的东西吗? 我找不到“smtp_envelope_to”
的配置选项答案 0 :(得分:26)
错误消息与SMTP信封无关,而与发件人有关:
发送消息需要SMTP To地址
其余的只是一般信息。
testmail@mymailaddress.com
中的某些内容无效。
你使用真实的工作地址吗?如果没有,请尝试使用。
答案 1 :(得分:4)
如果您使用sidekiq + actionmailer。使用哈希发送电子邮件时要小心。我正在做这样的事情 MyWorker.perform_async(&#34; var1&#34;,{email:&#39; test@test.com' ;, var2:&#39; test1234&#39;})
我把头撞了几个小时,为什么它会抛出上述错误。因为在perform_menthod哈希[:email]中是nil。您需要使用哈希[&#34;电子邮件&#34;]来接收电子邮件。我不知道,原因。但它帮助我摆脱了这个错误。
答案 2 :(得分:2)
:to => 'testmail@mymailaddress.com'
你的失败环境是怎样的?如果它不是硬编码的电子邮件地址,请确保包含转发地址的变量不是空白。
您不必明确设置Mail::Message#smtp_envelope_to
。它可以从收件人那里猜出来,即。 Mail::Message#destinations
(至+ cc + bcc),但似乎没有。