ruby-on-rails - Heroku 在尝试发送电子邮件时产生 500 错误
问题描述
我相信 Heroku 上的 Rails 应用程序在尝试发送电子邮件时开始产生 500 个错误 - 我们使用 SendGrid 插件。
我看到的错误是这样的:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate has expired)
我们的证书由 Heroku 管理,因此我无法在 Heroku 控制面板中看到有关它们的信息,但是当我在 Chrome 中查看证书时,它们似乎在 7 月底之前都有效。
我已向 Heroku 支持提出问题,正在等待回复。
更新:Heroku 说这是因为他们的堆栈版本 16 是一个问题,我应该升级到 18。我这样做了,但没有帮助。
我发现出于某种原因,我显然只是在使用 Devise 邮件程序时遇到了这个问题。
我测试了设置 OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE ,这解决了问题......
所以现在我不确定 Devise 是否在做与其他邮件不同的事情,如果是,为什么......
解决方案
Heroku 认为这可能是与 Heroku-16 堆栈有关的问题。他们建议升级到版本 18 堆栈。
我尝试更新到 v18 堆栈,但它没有解决我们的问题。
后来我添加了一个日志条目来检查完整的堆栈跟踪,它开始看起来像是涉及到 premailer gem。
我注意到我们在模板中包含了来自 CDN 的 Bootstap,并且该预邮件程序可能无法尝试获取该 CSS。
我最终摆脱了 premailer 和 Bootstrap CSS(不管怎样,这对我们确实有很大帮助)。
这解决了这个问题,但我从来没有真正理解过真正的原因,这可能是由于 Heroku 建议和 mhale 在回答这个问题时提到的 Sectigo 证书于 2020 年 5 月 30 日到期的结果。
推荐阅读
- php - 诗篇是否支持“这个”的@param-out?
- java - 求整数
- f# - 如何复制列表中的元素不同次数?
- documents4j - documents4j - docx 到 pdf 生成问题
- python - 如何使用类列表作为函数参数?
- python - Python - Slate3k 安装 pdfminer 后给我一个类型错误
- javascript - 如何用正则表达式杀死 tabindex="*" 并在 Javascript 中全部替换
- javascript - 如何在运行第二个函数javascript之前等待第一个函数完成
- python-3.x - 如何从 UCI 机器学习存储库将数据集(.data 和 .names)直接读入 Python DataFrame
- angular - PrimeNg- 悬停时的 p 下拉工具提示