[英]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 应用程序密码
当您启用两步验证(也称为两步验证)时,您可以为您的帐户增加一层额外的安全保护。 您使用您知道的信息(您的密码)和您拥有的信息(发送到您手机的代码)登录。
设置两步验证
应用密码是一个 16 位密码,可让应用或设备访问您的 Google 帐户。 如果您使用两步验证并在尝试访问您的 Google 帐户时看到“密码不正确”错误,应用密码可能会解决问题。 大多数情况下,您只需为每个应用程序或设备输入一次应用程序密码,因此不必担心记住它
如何生成应用密码
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.