【发布时间】:2016-04-09 03:49:50
【问题描述】:
我有一个在 RedHat 的 OpenShift 上运行的 Ruby on Rails (v4.1.5) 应用程序。 我正在从 Mandrill 切换到 SendGrid。在开发中,我能够将以下内容添加到我的 development.rb 配置文件中:
ActionMailer::Base.smtp_settings = {
:address => "smtp.sendgrid.net",
:port => 587,
:authentication => "plain",
:domain => ENV["DOMAIN_NAME"],
:enable_starttls_auto => true,
:user_name => ENV["SENDGRID_USERNAME"],
:password => ENV["SENDGRID_PASSWORD"]
}
而且我可以像以前一样继续使用 ActionMailer。我在本地对其进行了测试并收到了电子邮件,并且标头显示它们来自 sendgrid。
然后我将相同的代码添加到 production.rb 并部署到 OpenShift。我在上面的代码中添加了新的 SENDGRID 用户名和密码环境变量,并验证了它们在 OpenShift 上的设置是否正确。
但是当我测试它时,日志文件显示它已将电子邮件发送到正确的电子邮件地址,但它没有显示在我的 SendGrid 仪表板上,我也没有收到电子邮件。
有谁知道 OpenShift 上可能显示更多信息的任何其他日志文件?我只看了 app-root/runtime/repo/log/production.log。
我尝试删除上面的 enable_starttls_auto 字段,但没有任何改变。
如何调试这个问题?我不知道是在 OpenShift 端还是在 SendGrid 端。
【问题讨论】:
-
确保在您的生产环境中打开所有必要的端口。
-
SendGrid 和 Mandrill 端口号相同 (587)。它与 Mandrill 一起工作而没有改变任何东西。
-
我尝试使用 SendInBlue 而不是 SendGrid。它再次在本地开发中工作,但在 OpenShift 上的生产中不起作用。所以我想这就是问题所在。
-
再次尝试使用 SparkPost 端口 587 和 2525。结果相同。除了 Mandrill 之外,OpenShift 上没有任何功能。现在我真的被困住了。
-
这是一个长镜头,但请尝试将行
:authentication => "plain"更改为:authentication => :plain
标签: ruby-on-rails openshift actionmailer sendgrid sparkpost