Rails 4动作邮件程序SMTP-AUTH错误缺少秘密短语?

问题描述 投票:0回答:2

我无法通过gmail使用Rails 4动作邮件发送电子邮件。一切都应该这么简单......但它不起作用。具体来说,我明白了

ArgumentError (SMTP-AUTH requested but missing secret phrase):

我已经阅读了有关情况的其他问题,但大多数都有简单的修复(“user_name”而不是“username”,或ENV变量错误)。我经过双重检查,我确信我的证书是正确的。这是我的开发的相关部分.rb:

config.action_mailer.delivery_method = :smtp                          
config.action_mailer.smtp_settings = {                    
  address: 'smtp.gmail.com',                                      
  port: 587,  
  domain:  'mydomain.com', 
  user_name:  ENV["GMAIL_USERNAME"],  
  password:  ENV["GMAIL_PXXWRD"],   
  authentication: 'plain',
  enable_starttls_auto: true                         
}  

我最初有明文凭证,但我可能应该将它们移动到env变量来解决问题。它没有改变任何东西。作为一个说明,我的Gmail是一个公司的Gmail,所以它实际上并没有以“@ gmail.com”结尾。我不确定这是否会改变,但我想我会提到它。我也试过一个标准的gmail地址,它什么都没改变。

另外,“丢失密码短语”是指密码错误吗?或者它是否找不到密码?还有什么可能导致错误?谢谢你的时间。

ruby-on-rails ruby gmail actionmailer
2个回答
2
投票

我刚刚在我正在开发的应用程序中处理了一个非常类似的场景。我得到了完全相同的“SMTP-AUTH请求但缺少秘密短语”错误。最终为我解决的是双重的:

1)确保您使用gmail的应用程序专用密码。 Instructions from Google here>如何生成应用程序密码。请注意,如果您还没有双因素身份验证,则还需要先设置它。您最终会得到一个16个字符长的应用程序密码。您将使用它作为Rails通过SMPT设置使用的密码。

2)确保您已正确设置本地环境变量文件,以便在编译Rails应用程序时加载,并通过将文件名放在您的gitignore中而从git跟踪中排除。我使用名为app_name / config / local_env.yml的文件,但您也可以使用Rails 4.2附带的标准secrets.yml文件,或者figaro gem非常适合管理ENV变量。 This RailsApps page很好地概述了如何管理ENV变量。

最终,我的SMTP设置最终看起来几乎与您的相同:

#GMAIL CONFIG
config.action_mailer.default_url_options = { :host =>'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default :charset => "utf-8"
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}

祝你好运!


0
投票

对我来说,我把密码放在bashrc文件中,我忘了重启puma服务器。如果你重新启动美洲狮服务器,那么这个错误是固定的。

© www.soinside.com 2019 - 2024. All rights reserved.