Gmail的动作邮件程序配置

时间:2018-01-16 16:34:51

标签: ruby-on-rails email gmail actionmailer

我正在尝试使用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

但我不确定这个解决方案是否仍然需要启用“安全性较低的应用”选项,这不是我需要的。 有没有人解决这个问题而不诉诸“不太安全的应用程序”?

提前致谢!

2 个答案:

答案 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',
    ...

所有其他设置均无效。