我尝试使用sendgrid在用户注册后向用户发送确认电子邮件。在我尝试配置发送网格之前,一切正常,但现在一旦用户尝试注册,我就会收到heroku错误消息以检查日志。我不知道如何制作日志,因为每一件事都只是一个致命的错误:
2016-09-24T02:33:00.151277+00:00 app[web.1]: F, [2016-09-24T02:33:00.151247 #3] FATAL -- : [e27b857c-d6d7-4e1d-a859-0abf408efa52] vendor/bundle/ruby/2.2.0/gems/actionmailer- 5.0.0.1/lib/action_mailer/message_delivery.rb:96:in `block in deliver_now'
2016-09-24T02:33:00.151307+00:00 app[web.1]: F, [2016-09-24T02:33:00.151277 #3] FATAL -- : [e27b857c-d6d7-4e1d-a859-0abf408efa52] vendor/bundle/ruby/2.2.0/gems/actionmailer- 5.0.0.1/lib/action_mailer/rescuable.rb:15:in `handle_exceptions'
2016-09-24T02:33:00.151373+00:00 app[web.1]: F, [2016-09-24T02:33:00.151307 #3] FATAL -- : [e27b857c-d6d7-4e1d-a859-0abf408efa52] vendor/bundle/ruby/2.2.0/gems/actionmailer-5.0.0.1/lib/action_mailer/message_delivery.rb:95:in `deliver_now'
2016-09-24T02:33:00.151406+00:00 app[web.1]: F, [2016-09-24T02:33:00.151374 #3] FATAL -- : [e27b857c-d6d7-4e1d-a859-0abf408efa52] vendor/bundle/ruby/2.2.0/gems/devise-4.2.0/lib/devise/models/authenticatable.rb:191:in `send_devise_notification'
编辑:回到日志中我发现了这些
2016-09- 24T05:30:26.437967+00:00 app[web.1]:
2016-09-24T05:30:26.438280+00:00 app[web.1]: I, [2016-09-24T05:30:26.438213 #3] INFO -- : [7bde114c-61f1-45c8-9660-f4ce4dc1e7c1] Completed 500 Internal Server Error in 61ms (ActiveRecord: 6.2ms)
2016-09-24T05:30:26.440494+00:00 app[web.1]: F, [2016-09-24T05:30:26.440427 #3] FATAL -- : [7bde114c-61f1-45c8-9660-f4ce4dc1e7c1]
2016-09-24T05:30:26.440562+00:00 app[web.1]: F, [2016-09-24T05:30:26.440501 #3] FATAL -- : [7bde114c-61f1-45c8-9660-f4ce4dc1e7c1] Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):
这些只是前几个。我觉得他们并没有告诉我足够的方法来弄清楚如何解决这个问题。
如果有帮助的话,链接到存储库: https://github.com/hbrodsk1/facebook
任何指导都很棒,因为我真的陷入了困境。
答案 0 :(得分:0)
您是否已通过" heroku config:set"?在rails控制台中设置了SENDGRID USERNAME和PASSWORD并且还在.bashrc文件中包含您的SENDGRID USERNAME和PASSWORD(如果您使用的是c9)。也许你想分享你为sendgrid做的设置程序?
答案 1 :(得分:0)
你必须在heroku配置或rails应用程序的production.rb文件中设置sendgrid用户名和密码。
答案 2 :(得分:0)
看起来您尚未配置生产环境以便为邮件程序使用Sendgrid。
将此添加到config / environments文件夹中的production.rb应该是第一步。只要您在代码中的某处定义SENDGRID_USERNAME
和SENDGRID_PASSWORD
即可。
config.action_mailer.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
}
此错误即将发生,因为Devise正在尝试处理邮件程序事件,但无法找到有关如何为生产环境处理邮件程序的说明。您已经在本地/开发环境中定义了这一点,这就是它在本地工作的原因。这至少应该指向正确的方向。
答案 3 :(得分:0)
事实证明我必须从我的控制台重置我的发送网格环境用户名并且它有效。感谢您的所有回复和帮助。