Sails.js - 用于欧盟域的 Mailgun API 基础 URL
Sails.js - Mailgun API base URL for EU domains
我目前正在使用 Sails.js v1.1,我面临的问题是我的电子邮件域是欧盟域。目前无法通过 sails-hook-organics
为 mailgun-js
设置主机参数 (* 'host' - the mailgun host (default: 'api.mailgun.net'))
,唯一接受的参数是:
// Initialize the underlying mailgun API wrapper lib.
var mailgun = Mailgun({
apiKey: inputs.secret,
domain: inputs.domain,
});
现在,我可以 'hot-fix' 在生产中使用它,但应该有一个更好的更永久的解决方案,它不包括放弃 'sails-hook-organics',至少是 mailgun 集成。任何建议表示赞赏。
通过设置它对我有效:
mailgun 域:'mg.your_domain.eu',
mailgunSecret: ‘secret_key,
in config/custom.js 并使用这些变量,sails.config.custom,mailgunSecret 和 sails.config.custom.mailgunDomain in api/hooks/custom/index.js, api/helpers/send-template-email.js 等.
终于找到了解决这个问题的方法。它是 sails-hook-organics
问题和 mailgun-js (npm module)
问题的组合。我的问题是 mailgun 域在欧盟区,所以当我使用默认的 sailsjs 配置变量 (mailgunDomain, mailgunSecret)
发送电子邮件时,我收到 'Forbidden' 响应。
这是由于 host
参数 mailgun-js
预期或退回到默认值 api.mailgun.net
。对于欧盟区域域,这应该是 api.eu.mailgun.net
并且无法将其包含在当前的 sails 实现和配置选项中。永久解决这个问题的方法是 'patch' mailgun-js
文件 node_modules/mailgun-js/lib/mailgun.js
。因为我使用的是 heroku,所以我希望它在每次部署时都保持不变。实现此目的的简单方法是在 package.json
中创建一个 postinstall
脚本,例如 "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';
这就是全部内容,设置此主机参数以修复 EU 区域禁止响应。
感谢 Mats Byrkjeland 关于修补方法的文章 https://opensource.christmas/2019/4
我认为之前关于差异补丁的回答是过度设计。您可以简单地使用主机参数来设置它。
const mailGunConfig = require("mailgun-js")({
apiKey: process.env.MAIL_GUN_API_KEY,
domain: mydomain.org,
host: "api.eu.mailgun.net"
});
我目前正在使用 Sails.js v1.1,我面临的问题是我的电子邮件域是欧盟域。目前无法通过 sails-hook-organics
为 mailgun-js
设置主机参数 (* 'host' - the mailgun host (default: 'api.mailgun.net'))
,唯一接受的参数是:
// Initialize the underlying mailgun API wrapper lib.
var mailgun = Mailgun({
apiKey: inputs.secret,
domain: inputs.domain,
});
现在,我可以 'hot-fix' 在生产中使用它,但应该有一个更好的更永久的解决方案,它不包括放弃 'sails-hook-organics',至少是 mailgun 集成。任何建议表示赞赏。
通过设置它对我有效:
mailgun 域:'mg.your_domain.eu',
mailgunSecret: ‘secret_key,
in config/custom.js 并使用这些变量,sails.config.custom,mailgunSecret 和 sails.config.custom.mailgunDomain in api/hooks/custom/index.js, api/helpers/send-template-email.js 等.
终于找到了解决这个问题的方法。它是 sails-hook-organics
问题和 mailgun-js (npm module)
问题的组合。我的问题是 mailgun 域在欧盟区,所以当我使用默认的 sailsjs 配置变量 (mailgunDomain, mailgunSecret)
发送电子邮件时,我收到 'Forbidden' 响应。
这是由于 host
参数 mailgun-js
预期或退回到默认值 api.mailgun.net
。对于欧盟区域域,这应该是 api.eu.mailgun.net
并且无法将其包含在当前的 sails 实现和配置选项中。永久解决这个问题的方法是 'patch' mailgun-js
文件 node_modules/mailgun-js/lib/mailgun.js
。因为我使用的是 heroku,所以我希望它在每次部署时都保持不变。实现此目的的简单方法是在 package.json
中创建一个 postinstall
脚本,例如 "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';
这就是全部内容,设置此主机参数以修复 EU 区域禁止响应。
感谢 Mats Byrkjeland 关于修补方法的文章 https://opensource.christmas/2019/4
我认为之前关于差异补丁的回答是过度设计。您可以简单地使用主机参数来设置它。
const mailGunConfig = require("mailgun-js")({
apiKey: process.env.MAIL_GUN_API_KEY,
domain: mydomain.org,
host: "api.eu.mailgun.net"
});