微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在生产中的Rails应用程序中使用Sendgrid Inbound Parse Webhook?

如何解决如何在生产中的Rails应用程序中使用Sendgrid Inbound Parse Webhook?

我正在尝试构建一个可以处理入站邮件的Rails应用。我使用Rails指挥和操作邮箱在本地计算机上运行了该应用程序。发送电子邮件后,我可以保存电子邮件内容。但是我很难在生产环境中使用它……我不确定如何配置域和设置以使其正常工作。

我一直按照这里的说明进行操作: https://edgeguides.rubyonrails.org/action_mailbox_basics.html#sendgridhttps://sendgrid.com/docs/for-developers/parsing-email/setting-up-the-inbound-parse-webhook/

我已将此包含在我的rails凭证中:

action_mailBox: ingress_password:mypassword

我已经在Google域上设置了MX记录:

parse.[mydomain].com

enter image description here

我指向了主机名和URL。

https://actionmailBox:mypassword@parse.[mydomain].com/rails/action_mailBox/sendgrid/inbound_emails

我将电子邮件帐户中的电子邮件发送给

parse@parse.[mydomain].com

但是我无法测试或跟踪此电子邮件的状况。我没有收到回信中的错误消息,因此我认为这是一个好兆头,但是我不确定是否正在处理它或如何进行故障排除。我什至在我的replies_mailBox.rb文件中放置了一个puts“ test”,但是当我拖尾登录生产时,控制台中什么都没有。

关于我可以采取哪些下一步措施的任何建议?

解决方法

在进行集成测试时,按照电子邮件路径的顺序将问题分成多个小问题很有用

  1. 通常在编辑区域时检查mx dns记录是否已传播-其他dns服务器可能仍会响应旧记录,直到区域TTL通过(通常设置为几个小时),然后使用一些远程dns检查器
  2. 检查sendgrid设置(包括actionmailbox期望的“发布原始的完整MIME消息”,以便sendgrid张贴“电子邮件”字段)
  3. 检查电子邮件是否已被sengrid中的垃圾邮件过滤器丢弃
  4. 检查请求是否存在于您的Web服务器/反向代理日志中(如nginx,如果您使用的话)
  5. 尝试模仿sendgrid的请求,以检查您的应用程序是否接受它(并且它是否在日志中),rails仅读取params[:email],其他字段不是必需的:
    curl -X POST "https://actionmailbox:mypassword@parse.[mydomain].com/rails/action_mailbox/sendgrid/inbound_emails" \
         -F email="From: foo <abc@localhost>\nTo: bar <bca@localhost>\nSubject: test\nMIME-Version: 1.0\n\nTest!"
    

我将从#5开始,以确保您的应用正确接收电子邮件并包含日志,然后继续运行。

PS。根据您的日志记录设置,puts可能不会出现在生产中的日志中(或者不在您期望的位置出现)。更好的方法是使用Rails.logger.info

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。