Ruby on Rails:用户名/密码错误? (535 Auth失败)

时间:2015-05-13 22:20:56

标签: ruby-on-rails ruby devise sendgrid

我刚刚在Bloc完成了我的红宝石基础课程,我开始把头埋进轨道开发中。事情进展顺利,直到我用设计和确认电子邮件打到这个障碍。我尝试使用Google搜索并查看其他一些问题,但无法找到任何可以提供给我的任何内容并适用于我的情况。

我在注册帐户时收到以下错误。

Devise中的Net :: SMTPAuthenticationError :: RegistrationsController #create

535验证失败:用户名/密码错误

从#976行

附近的源代码中提取错误
def check_auth_response(res)
  unless res.success?
    raise SMTPAuthenticationError, res.message
  end
end

从其他帖子我知道你可能想看到我有一个如下所示的config / initializers / setup_mail.rb文件:

if Rails.env.development?
  ActionMailer::Base.delivery_method = :smtp
  ActionMailer::Base.smtp_settings = {
    address:        'smtp.sendgrid.net',
    port:           '587',
    authentication: :plain,
    user_name:      ENV['SENDGRID_USERNAME'],
    password:       ENV['SENDGRID_PASSWORD'],
    domain:         'heroku.com',
    enable_starttls_auto: true
  }
end

这是一个application.yml文件示例:

SENDGRID_PASSWORD: 
SENDGRID_USERNAME:
SECRET_KEY_BASE:

我的config / environments / development.rb中还有以下内容,然后才有人提出建议:

config.action_mailer.default_url_options = { host: 'localhost:3000'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
# Override Action Mailer's 'silent errors' in development
config.action_mailer.raise_delivery_errors = true

如果您希望看到任何其他文件,请告知我们,我会将其添加到此帖子中。

3 个答案:

答案 0 :(得分:8)

恭喜并欢迎光临黑客的世界。

您获得的错误意味着SendGrid服务器收到了错误的用户名+密码组合。

您的环境变量是空的,您的application.yml文件无法使用您的SendGrid用户名+密码正确加载。

您可以通过在代码中的某处打印出来进行确认。在控制器中工作。

puts "SENDGRID_USERNAME: #{ENV['SENDGRID_USERNAME']}"
puts "SENDGRID_PASSWORD: #{ENV['SENDGRID_PASSWORD']}"

我怀疑他们是零。

我建议您阅读https://quickleft.com/blog/simple-rails-app-configuration-settings/,了解如何将这些内容发送到您的应用中。

如果您需要更多帮助,请与我们联系!

答案 1 :(得分:6)

<块引用>

自 2020 年第四季度起需要双重身份验证,所有 Twilio SendGrid API 端点将拒绝新的 API 请求和 SMTP 通过 Basic 使用用户名和密码进行配置 身份验证。

我从过去几年一直运行的应用中收到了类似的问题。从现在开始,基本身份验证不起作用,您需要使用替代身份验证机制。 Heroku sendgrid 安装时的自动配置尚未更新以反映这一点。

来源:https://sendgrid.com/docs/for-developers/sending-email/upgrade-your-authentication-method-to-api-keys/

答案 2 :(得分:0)

在我的情况下,错误是将我的 apikey 的 id 用作用户名,但这是错误的,正确的值 user_name 是 'apikey',(字面意思是 'apikey' 字符串),正如他们在集成示例中所说, https://sendgrid.com/docs/for-developers/sending-email/rubyonrails/ https://app.sendgrid.com/guide/integrate/langs/smtp

ActionMailer::Base.smtp_settings = {
:user_name => 'apikey', # This is the string literal 'apikey', NOT the ID of your API key
:password => '<SENDGRID_API_KEY>', # This is the secret sendgrid API key which was issued during API key creation
:domain => 'yourdomain.com',
:address => 'smtp.sendgrid.net',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}