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

时间:2014-09-16 15:09:36

标签: ruby-on-rails email ruby-on-rails-4 smtp

我正在尝试在Rails 4中创建一个联系表单。我在这里做了一些挖掘并且能够使大部分内容工作。 (关注@ sethfri在这里的工作Contact Form Mailer in 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
  } 

我也补充说 的 ... /配置/初始化/ 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)但没有成功。

感谢您的帮助!

5 个答案:

答案 0 :(得分:54)

您必须正确设置域。目前在代码中发布了其“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
}

答案 1 :(得分:37)

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

答案 2 :(得分:7)

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

  

启用两步验证(也称为双因素身份验证)后,您需要为帐户添加额外的安全保护层。您使用您知道的内容(密码)和您拥有的内容(代码发送到手机)登录。

设置两步验证

  1. 转到2-Step Verification页面。您可能需要登录自己的Google帐户。
  2. 在"两步验证"在右侧的框中,选择开始设置。
  3. 按照分步设置流程进行操作。
  4.   

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

    如何生成应用密码

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

答案 3 :(得分:1)

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

他们的红宝石图书馆仍然是阿尔法。 似乎有一些宝石为OAuth扩展了ActionMailer,但我从未使用它们。

答案 4 :(得分:0)

2019年,Rails 5更新了答案:

  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: "stronglong64@gmail.com",
    password: "tutorialrails", 
    domain: "smtp.gmail.com",
    openssl_verify_mode: "none",
  }