Ruby on rails “错误”;发送邮件时需要SMTP收件人地址";关于学习Rails教程

Ruby on rails “错误”;发送邮件时需要SMTP收件人地址";关于学习Rails教程,ruby-on-rails,railsapps,learn-ruby-on-rails,Ruby On Rails,Railsapps,Learn Ruby On Rails,我在教程的“发送邮件”部分不断遇到错误 我已尝试在本地计算机上克隆,但问题仍然存在 下面是我的代码: user\u mailer.rb class UserMailer < ApplicationMailer default from: "do-not-reply@example.com" def contact_email(contact) @contact = contact mail(to: Rails.application.secrets.owner_e

我在教程的“发送邮件”部分不断遇到错误

我已尝试在本地计算机上克隆,但问题仍然存在

下面是我的代码:

user\u mailer.rb

class UserMailer < ApplicationMailer
  default from: "do-not-reply@example.com"

  def contact_email(contact)
    @contact = contact
    mail(to: Rails.application.secrets.owner_email, from: @contact.email, :subject => "Website Contact")
  end
end
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
  }
  # ActionMailer Config
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
  # Send email in development mode?
  config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {       
    address : "smtp.live.com"
    # everything else is identical.
}
秘密。yml

development:
  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  domain_name: example.com
  owner_email: <%= ENV["OWNER_EMAIL"] %>
开发:
电子邮件\提供商\用户名:
电子邮件\提供商\密码:
mailchimp_api_密钥:
mailchimp\u列表\u id:
域名:example.com
业主(电邮:
我还确保在.bashrc文件上正确设置了环境变量


我们将非常感谢您的帮助,并提前向您表示感谢

对于开发,您可以使用开信器gem。发送电子邮件后,它将自动在默认浏览器中打开

将以下内容添加到文件的“开发”部分

gem 'letter_opener'

我也有同样的问题。我尝试了一切,从禁用两步验证(Google)到在secrets.yml中硬编码我的凭证,都没有成功

我使用了我的outlook.com凭据,它工作得非常好

注:这需要对development.rb进行更改

class UserMailer < ApplicationMailer
  default from: "do-not-reply@example.com"

  def contact_email(contact)
    @contact = contact
    mail(to: Rails.application.secrets.owner_email, from: @contact.email, :subject => "Website Contact")
  end
end
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
  }
  # ActionMailer Config
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
  # Send email in development mode?
  config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {       
    address : "smtp.live.com"
    # everything else is identical.
}

设置为gmail

ActionMailer::Base.delivery_method = :smtp
    ActionMailer::Base.smtp_settings = {
      :address => "smtp.gmail.com",
      :domain => "gmail.com",
      :port => 587, 
      :user_name => "username",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true,
      :openssl_verify_mode => 'none' 
    }
让它成为现实
config.action\u mailer.raise\u delivery\u errors=true
它将告诉您是否发生任何错误


另外,请尝试将您的Gmail凭证硬编码到secrets.yml文件中。不要将其签入git,只需查看ENV变量是否存在任何问题。嗨,丹尼尔,我已经尝试将我的Gmail凭据硬编码到secrets.yml或user.mailer.rb文件中,问题仍然存在。看起来域名将成为example.com或nilThank zach!我试过了,但同样的错误仍然存在。你是在之后捆绑安装的吗?我想谷歌最近改变了Gmail API?