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

我正在试图在Rails 4中创build一个联系表单。我在这里做了一些挖掘工作,并且能够获得大部分的工作。 (跟随@ sethfri的工作在这里联系表单邮件在Rails 4 )

现在我可以填写我的表格并点击发送。 在我的Rails服务器上,它说邮件出站到我的电子邮件地址,但我没有收到我的Gmail邮箱中的任何东西,所以我认为我的SMTP设置是不正确的。 我的smtp设置是:

…configuration/环境/ 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 } 

另外我join了… / 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,改变:端口=>“587”到:端口=> 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设置并启用不太安全的应用程序以使应用程序正常工作。

经过几个小时的search,如何使这个工作对我来说,我find了一个方法,使其工作。 对于我自己,我需要进行两步validation并使用Gmail应用程序密码

当启用两步validation(也称为双因素validation)时,您可以为帐户添加额外的安全性层。 你用你认识的东西(你的密码)和你有的东西(一个代码发送到你的手机)login。

设置两步validation

  1. 转到两步validation页面。 您可能需要login到您的Google帐户。
  2. 在右侧的“两步validation”框中,select开始设置。
  3. 按照一步一步的设置过程。

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

如何生成应用程序密码

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

Googlebuild议使用OAuth 2.0进行login过程。 这个configuration对于​​谷歌来说“不是那么安全”,但是他们可以容忍它。 您必须在Google帐户设置中允许“不太安全的连接”,或使用OAuth方式。 https://developers.google.com/identity/protocols/OAuth2

他们的ruby库仍然是阿尔法。 似乎有一些gem延伸OAuth的ActionMailer,但我从来没有使用过它们。