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

时间:2016-01-13 04:13:01

标签: ruby-on-rails ruby gmail actionmailer

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

self.mainView.addSubview(mainScrollView!)

我已经在这里阅读了有关情况的其他问题,但大多数都有简单的修复(" user_name"而不是"用户名"或ENV变量错误) 。我已经仔细检查了,我确定我的凭据是正确的。这是我的开发的相关部分.rb:

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

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

此外,"缺少秘密短语"是指密码错误?或者它是否找不到密码?还有什么可能导致错误?谢谢你的时间。

3 个答案:

答案 0 :(得分: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"]
}

祝你好运!

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果此设置在本地运行良好,并且在部署该产品以使其无法正常工作时,我认为Google可能会检查它来自的设备,或者至少是ip,我为生产服务器生成了新的应用程序密码,几分钟开始工作。

因此,如果Google SMTP AND并且您在不更改配置的情况下更改设备/ ip,请尝试生成新的APP密码。