我正在尝试使用Gmail SMTP向我的应用添加电子邮件递送。我之前已经完成了“不太安全的应用程序”的方式,但我不想在这个项目中使用这个选项。
我试图查看Google的文档或某些宝石以使其工作,但无济于事。每个人都只发送一些代码(如下所示,通常与我的相同),或者告诉我尝试'安全性较低的应用'。
我在production.rb上的当前操作邮件程序配置是:
config.action_mailer.perform_caching = false
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => ENV['DOMAIN_NAME'] }
config.action_mailer.asset_host = ENV['DOMAIN_NAME']
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:authentication => :plain,
:user_name => ENV['USERNAME'],
:password => ENV['PASSWORD'],
:enable_starttls_auto => true
}
有些人说我需要“:domain =>'gmail.com'”但是使用“安全性较低的应用”选项可行,所以我的猜测是问题不是那么简单。此外,人们谈论将'authentication :: plain'更改为:login。
另外,我意识到在官方的Rails文档中它说:
注意:截至2014年7月15日,Google增加了其安全措施,现在阻止其认为不太安全的应用程序的尝试。您可以在此处更改您的Gmail设置以允许尝试。如果您的Gmail帐户启用了双因素身份验证,那么您需要设置应用密码并使用该密码而不是常规密码。或者,您可以使用另一个ESP通过将上面的'smtp.gmail.com'替换为您的提供商的地址来发送电子邮件。
(来自http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration-for-gmail)
但我不确定这个解决方案是否仍然需要启用“安全性较低的应用”选项,这不是我需要的。 有没有人解决这个问题而不诉诸“不太安全的应用程序”?
提前致谢!
答案 0 :(得分:0)
config.read_encrypted_secrets = true
config.action_mailer.default_url_options = { :host =>
"domain.com" }
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:user_name => "username",
:password => "password",
:enable_starttls_auto => true
}
试试这个配置。
答案 1 :(得分:0)
好的,经过一段时间我终于做到了。
我必须做的是:
1)对我的Gmail帐户进行两步验证,您可以在此处启用:https://myaccount.google.com/security
2)在此处创建应用专用密码:https://support.google.com/accounts/answer/185833
这是一个格式为16个小写字母的字符串。它们以4个为一组分开显示,但它们都在同一个字符串中。您所要做的就是在块内的密码字段中添加此应用程序密码。
...
:user_name => 'my@gmail.com',
:password => 'abcdefghijklmnop',
...
所有其他设置均无效。