Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:用户名/密码不正确?(535身份验证失败)_Ruby On Rails_Ruby_Devise_Sendgrid - Fatal编程技术网

Ruby on rails RubyonRails:用户名/密码不正确?(535身份验证失败)

Ruby on rails RubyonRails:用户名/密码不正确?(535身份验证失败),ruby-on-rails,ruby,devise,sendgrid,Ruby On Rails,Ruby,Devise,Sendgrid,我刚刚在Bloc完成了ruby基础课程,我开始埋头于rails开发。事情一直进展顺利,直到我用设计和确认邮件遇到了这个障碍。我试着在谷歌上搜索,四处看看其他一些问题,但找不到任何能让我从中获益并适用于我的情况的问题 我在注册帐户时收到以下错误 设计::注册控制器#创建中的Net::SMTPAuthenticationError 535身份验证失败:用户名/密码错误 从行#976周围的源提取的错误 从其他帖子中,我知道您可能希望看到我的config/initializers/setup_mai

我刚刚在Bloc完成了ruby基础课程,我开始埋头于rails开发。事情一直进展顺利,直到我用设计和确认邮件遇到了这个障碍。我试着在谷歌上搜索,四处看看其他一些问题,但找不到任何能让我从中获益并适用于我的情况的问题

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

设计::注册控制器#创建中的Net::SMTPAuthenticationError 535身份验证失败:用户名/密码错误
从行#976周围的源提取的错误


从其他帖子中,我知道您可能希望看到我的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


如果你还想看其他文件,请告诉我,我会把它们添加到这篇文章中。

祝贺你,欢迎来到黑客世界

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

很可能是您的环境变量为空,并且您的
应用程序.yml
文件未正确加载SendGrid用户名+密码

您可以通过在代码的某个地方打印它们来确认这一点。在一个控制器工作

puts "SENDGRID_USERNAME: #{ENV['SENDGRID_USERNAME']}"
puts "SENDGRID_PASSWORD: #{ENV['SENDGRID_PASSWORD']}"
我怀疑他们是零

我建议您阅读有关如何将它们来源于您的应用程序的内容

如果你需要更多的帮助,请告诉我

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

我在过去几年运行的一个应用程序中也遇到了类似的问题。从现在起,基本身份验证不再有效,您需要使用另一种身份验证机制。Heroku sendgrid安装时的自动配置尚未更新以反映这一点


来源:

在我的例子中,错误是将我的apikey的id用作用户名,但这是错误的,正确的用户名值是“apikey”(字面意思是“apikey”字符串),正如他们在集成示例中所说,

ActionMailer::Base.smtp\u设置={
:user_name=>'apikey',#这是字符串文字'apikey',而不是API密钥的ID
:password=>“”,#这是在API密钥创建过程中发出的秘密sendgrid API密钥
:domain=>yourdomain.com,
:address=>smtp.sendgrid.net',
:端口=>587,
:身份验证=>:普通,
:enable_starttls_auto=>true
}

回答得很好,谢谢@eddie。我开始在
secrets.yml
文件中以注释行的形式保存一些设置,然后使用
导出在shell中手动设置。是否有任何理由拥有一个
secrets.yml
文件,或者我应该将所有这些合并到
application.yml
?用户名和密码不是零,它们显示为最低工作示例。如果你把它扔到GitHub上,很高兴能看看你有什么。@eddiezane最终解决了这个问题,删除了sendgrid插件并取消了用户/传递变量,然后重新添加了该插件,但这次使用的是
heroku插件:create sendgrid:starter
,而不是
heroku插件:add sendgrid:starter
@JeffWilkey I按照您的建议,立即查看
在联系附加组件合作伙伴创建sendgrid时遇到错误:starter:error Provisioning User-User status-Banked
。在上下文中,这是我第一次使用sendgrid和sendgrid+heroku组合。这两个都不是很好的用户体验。
puts "SENDGRID_USERNAME: #{ENV['SENDGRID_USERNAME']}"
puts "SENDGRID_PASSWORD: #{ENV['SENDGRID_PASSWORD']}"
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
}