终于找到了解决这个问题的方法。它是一个 sails-hook-organics
问题和一个mailgun-js (npm module)
问题的组合。我的问题是 mailgun 域位于欧盟区域,所以当我使用默认的sailsjs 配置变量(mailgunDomain, mailgunSecret)
发送电子邮件时,我得到一个“禁止”响应。
这是由于host
参数 mailgun-js
期望或回退到默认值api.mailgun.net
. 对于欧盟区域域,这应该是api.eu.mailgun.net
并且没有办法将其包含在当前的sails 实现和配置选项中。永久解决此问题的方法是“修补”mailgun-js
文件node_modules/mailgun-js/lib/mailgun.js
。因为我使用的是 heroku,所以我希望它在每次部署时都保持不变。实现这一点的简单方法是在like so中创建一个postinstall
脚本。package.json
"postinstall": "patch --forward node_modules/mailgun-js/lib/mailgun.js < patches/mailgun.patch && grunt build"
mailgun.patch 文件的内容是通过发出此命令创建的差异,该命令 diff -Naur node_modules/mailgun-js/lib/mailgun.js patches/mailgun.js > patches/mailgun.patch
获取两个文件的差异,后者是我的 node_modules/mailgun-js/lib/mailgun.js 文件的副本,但在线编辑25 内容为:this.host = 'api.eu.mailgun.net';
这就是全部内容,设置此主机参数以修复欧盟区域禁止响应。
归功于 Mats Byrkjeland 的修补方法文章 https://opensource.christmas/2019/4