终于找到了解决这个问题的方法。它是一个 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