【问题标题】:Why do I get: An SMTP To address is required to send a message. "Set the message smtp_envelope_to, to, cc, or bcc address."?为什么会收到:发送邮件需要 SMTP 收件人地址。 “设置消息 smtp_envelope_to、to、cc 或 bcc 地址。”?
【发布时间】:2016-03-29 13:09:14
【问题描述】:

我正在关注 Daniel Kehoe 的《学习 Ruby on Rails》一书,当我尝试发送邮件时,出现以下错误。

ArgumentError at /contacts 需要一个 SMTP To 地址才能发送 信息。设置消息 smtp_envelope_to、to、cc 或 bcc 地址。

更好的错误 gem 指向联系人控制器中的UserMailer.contact_email(@contact).deliver

我已经做了一些研究,并且在错误发生之前按照书中关于在我的 .bash_profile 文件中设置环境变量的说明进行了操作。

非常感谢任何帮助。

更新

根据回复,谢谢。我已经设置了邮件(到:)

def contact_email(contact)
  @contact = contact
  mail(to: Rails.application.secrets.owner_email, from: @contact.email, :subject => "Website Contact")
end

我设置了 smtp 设置:

config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
  domain: Rails.application.secrets.domain_name,
  authentication: "plain",
  enable_starttls_auto: true,
  user_name: Rails.application.secrets.email_provider_username,
  password: Rails.application.secrets.email_provider_password
}

更新 2

谢谢。在下面找到秘密:) 我在这里排除了密钥库

development:
  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  domain_name: example.com
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  owner_email: <%= ENV["OWNER_EMAIL"] %>
  secret_key_base: 'my secret key_base'


test:
  secret_key_base: 'my secret key_base'

production:
  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  domain_name: <%= ENV["DOMAIN_NAME"] %>
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  owner_email: <%= ENV["OWNER_EMAIL"] %>
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

【问题讨论】:

  • 您在邮件中调用mail() 时是否将to: 选项设置为有效的电子邮件?
  • 谢谢。我做到了。请参阅上面的更新
  • 显示你的 secrets.yml
  • @infused 感谢您的格式化。格式化后,我更加了解如何进行格式化。感谢并为糟糕的格式感到抱歉。
  • @SergioTulentsev 请查看机密文件。谢谢

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


【解决方案1】:

通过一些侦探工作,我偶然发现了一个只需要我重新启动终端的解决方案

问题如上所述。之前我在 .bash_profile 文件中填写了以下环境变量。

export GMAIL_USERNAME="my_email@gmail.com"
export GMAIL_PASSWORD="my_password"
export MAILCHIMP_API_KEY="my mail_chimp_api_key"
export MAILCHIMP_LIST_ID="my mail_chimp_list_id"
export OWNER_EMAIL="my_email@gmail.com"

但它的应用程序无法以某种方式访问​​这些变量。

我偶然在终端输入了以下命令

> env

它列出了你电脑环境中的所有环境变量。 (我认为)

无论如何,我看到上面设置的变量意味着我的变量设置正确,只是应用程序无法访问变量。

经过一番挖掘,我遇到了这个post,上面说了一些关于重启终端的事情。

我试过了,它奏效了。

吸取的教训是,当我改变环境变量时,我应该重新启动我的终端。

我希望这对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 2011-05-24
    • 2012-04-23
    • 1970-01-01
    相关资源
    最近更新 更多