我在使用Rails 4 action mailer通过gmail发送电子邮件时遇到了问题。一切都应该很简单...然而,它并没有起作用。具体地说,我得到
ArgumentError (SMTP-AUTH requested but missing secret phrase):我在这里读过关于这种情况的其他问题,但大多数都有简单的修复("user_name“而不是"username",或者ENV变量错误)。我已经仔细检查过了,我确信我的证件是正确的。以下是我的development.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
} 我最初使用的是纯文本形式的凭据,但我认为也许应该将它们移到环境变量中来解决这个问题。这并没有改变任何事情。注意,我的gmail是一个公司的gmail,所以它实际上不会以"@gmail.com“结尾。我不确定这是否会改变什么,但我想我应该提一下。我也尝试了一个标准的gmail地址,它不会改变任何东西。
另外,“缺少密码短语”指的是错误的密码吗?或者它一开始就没有找到密码?还有什么可能会导致这个错误?谢谢你们抽出时间来。
发布于 2016-03-13 06:42:18
我刚刚在我正在开发的一个应用程序中处理了一个非常类似的场景。我得到了完全相同的"SMTP-AUTH requested secret phrase“错误。对我来说,最终解决它的方法有两个:
1)确保gmail使用的是特定于应用程序的密码。Instructions from Google here >如何生成应用密码。请注意,如果您还没有双因素身份验证,则还需要首先进行设置。您最终得到的应用程序密码长度为16个字符。您将使用该密码作为Rails通过SMPT设置使用的密码。
2)确保您已经适当地设置了本地环境变量文件,以便它在编译Rails应用程序时加载,并通过将文件名放在gitignore中从git跟踪中排除。我使用一个名为app_name/config/local_env.yml的文件,但是您也可以使用Rails4.2附带的标准secrets.yml文件,或者figaro gem在管理ENV变量方面非常流行。This RailsApps page很好地概述了如何管理环境变量。
最终,我的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"]
}祝你好运!
发布于 2017-12-19 19:54:50
对我来说,我把密码放在bashrc文件中,忘记了重启puma服务器。如果您重新启动puma服务器,则此错误将被修复。
发布于 2020-06-09 06:54:36
让这个设置在本地运行得很好,并且当部署prod它不工作时,我认为Google可能会检查它来自的设备,或者至少是ip,我为生产服务器生成了一个新的应用程序密码,几分钟后它开始工作。
因此,如果您在Google SMTP上更改了设备/ip而没有更改配置,请尝试生成一个新的应用程序密码。
https://stackoverflow.com/questions/34758289
复制相似问题