【问题标题】:ArgumentError: An SMTP To address is required to send a message. Set the message smtp_envelope_to, to , cc, or bcc addressArgumentError:发送邮件需要 SMTP 收件人地址。设置消息 smtp_envelope_to、to、cc 或 bcc 地址
【发布时间】:2013-08-27 11:53:44
【问题描述】:

我有一个带有以下邮件配置的 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 收件人地址。放 邮件 smtp_envelope_to、to、cc 或 bcc 地址。

有没有可能我忘记了要设置的东西。? 而且我找不到“smtp_envelope_to”的配置选项

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 actionmailer


    【解决方案1】:

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

    发送邮件需要 SMTP 收件人地址

    其余的只是一般性信息。 您的 testmail@mymailaddress.com 中的某些内容不起作用。 您使用真实的工作地址吗?如果没有,请尝试一个。

    【讨论】:

    • 谢谢我的失败是覆盖了一个 smtp 地址,将其设置为 nil Oo
    【解决方案2】:

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

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

    【讨论】:

    • 也许对离题很抱歉,但是您必须使用 hash['email'] 的原因是由于序列化过程到 redis 中。 Sidekiq 创建 JSON 文档,它会自动将所有键转换为字符串。
    【解决方案3】:

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

    您不必明确设置Mail::Message#smtp_envelope_to。它可以从它的接收者那里猜到它,即。 Mail::Message#destinations(to + cc + bcc),但是好像没有。

    【讨论】:

    • 简单的建议,正是解决了我的问题。我的 SMTP default from: 中传递的 APP_CONFIG 值返回 nil。
    猜你喜欢
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2015-10-31
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多