繁体   English   中英

Rails 4、如何正确配置smtp设置(gmail)

[英]Rails 4, how to correctly configure smtp settings (gmail)

我正在尝试在 Rails 4 中创建一个联系表单。我在这里进行了一些挖掘,并且能够使大部分内容正常工作。 (遵循@sethfri 在此处的工作,Rails 4 中的联系表格邮件程序

现在我可以填写我的表单并点击发送。 在我的 rails 服务器中,它说邮件已出站到我的电子邮件地址,但我的 gmail 邮箱中没有收到任何内容,所以我认为我的 smtp 设置不正确。 我的 smtp 设置是:

...配置/环境/development.rb

config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "mygmailusername@gmail.com",
    :password => "myGmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
  } 

我还添加了.../config/initializers/smtp_settings.rb

ActionMailer::Base.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "gmailuser@gmail.com",
    :password => "gmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
}

我错过了什么/做错了什么? 我尝试了几件事(将 default_url 更改为端口 1025,将 :port => "587" 更改为 :port => 587)但没有成功。

谢谢您的帮助!

您必须正确设置域。 目前在代码中发布了它的“mydomain.net”。 如果您想通过 gmail 发送,请将其更改为gmail.com

config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'gmail.com',
  user_name:            'xyz@gmail.com',
  password:             'yourpassword',
  authentication:       :plain,
  enable_starttls_auto: true
}

如果您在使用 Gmail 发送电子邮件(常见于 Google Apps 帐户)时遇到 Net::SMTPAuthenticationError 等错误,请访问您的Gmail 设置并启用安全性较低的应用程序以使应用程序正常工作。

经过几个小时的搜索,如何让它为我工作,我找到了一种让它工作的方法。 对于我自己,我需要进行两步验证并使用 Gmail 应用程序密码

当您启用两步验证(也称为两步验证)时,您可以为您的帐户增加一层额外的安全保护。 您使用您知道的信息(您的密码)和您拥有的信息(发送到您手机的代码)登录。

设置两步验证

  1. 转至两步验证页面。 您可能需要登录您的 Google 帐户。
  2. 在右侧的“两步验证”框中,选择开始设置。
  3. 按照分步设置过程进行操作。

应用密码是一个 16 位密码,可让应用或设备访问您的 Google 帐户。 如果您使用两步验证并在尝试访问您的 Google 帐户时看到“密码不正确”错误,应用密码可能会解决问题。 大多数情况下,您只需为每个应用程序或设备输入一次应用程序密码,因此不必担心记住它

如何生成应用密码

  1. 访问您的应用密码页面。 系统可能会要求您登录自己的 Google 帐户。
  2. 在底部,单击选择应用程序并选择您正在使用的应用程序。
  3. 单击选择设备并选择您正在使用的设备。
  4. 选择生成。
  5. 按照说明在您的设备上输入应用程序密码(黄色栏中的 16 个字符代码)。
  6. 选择完成

2020 年,Rails 6 更新了答案:

  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_caching = false
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: "blabla@gmail.com",
    password: "blabla", 
    domain: "smtp.gmail.com",
    openssl_verify_mode: "none",
  }

Google 建议在登录过程中使用 OAuth 2.0。 这种配置对谷歌来说“不太安全”,但他们可以容忍。 您必须在 Google 帐户设置中允许“安全性较低的连接”或使用 OAuth 方式。 https://developers.google.com/identity/protocols/OAuth2

他们的 ruby​​ 库仍然是 alpha 版本。 似乎有一些 gems 为 OAuth 扩展了 ActionMailer,但我从未使用过它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM