我在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上。
答案 0 :(得分:0)
这篇文章应该有所帮助。我不是Ruby专家,所以我无法提供帮助。
https://developers.openshift.com/external-services/sendgrid.html
我知道我们有很多用户使用openshift和sendgrid。
这是一个PHP代码回购 - 我知道我不是正确的语言,而是一个很好的例子
答案 1 :(得分:0)
首先,与Telnet直接连接:
telnet smtp-relay.sendinblue.com 587
Trying 94.143.17.4...
如果您收到此错误:
telnet: Unable to connect to remote host: Connection timed out
然后,问题不在Rails中。
就我而言,问题出在端口号中。我的服务器在DigitalOcean上运行,它阻止与587端口的连接,除非你要求它们解除阻塞,并且它们也会根据主机名取消阻塞,这意味着它可以使用mandrill而不能与其他人一起使用。
记住" 2525"是新的" 587" ,即使对于SendinBlue也是如此。
要检查telnet上是否超时的其他事项:
禁用IPv6:
将以下行添加到/etc/sysctl.conf
:
#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
更改需要重启。
您可以使用
测试是否禁用IPv6cat /proc/sys/net/ipv6/conf/all/disable_ipv6