0

我目前正在使用 Sails.js v1.1,我面临的问题是我的电子邮件域是欧盟域。目前无法通过唯一接受的参数(* 'host' - the mailgun host (default: 'api.mailgun.net'))设置主机参数:mailgun-jssails-hook-organics

    // Initialize the underlying mailgun API wrapper lib.
    var mailgun = Mailgun({
      apiKey: inputs.secret,
      domain: inputs.domain,
    });

现在,我可以在生产中“热修复”这个问题,但应该有一个更好更永久的解决方案,其中不包括放弃“sails-hook-organics”,至少是 mailgun 集成。任何建议表示赞赏。

4

3 回答 3

1

我认为先前对补丁差异的回答是过度工程。您可以简单地使用主机参数进行设置。

const mailGunConfig = require("mailgun-js")({
  apiKey: process.env.MAIL_GUN_API_KEY,
  domain: mydomain.org,
  host: "api.eu.mailgun.net"
});
于 2021-05-06T15:10:19.520 回答
1

通过设置它适用于我:

mailgunDomain: 'mg.your_domain.eu',

mailgunSecret: 'secret_key,

在 config/custom.js 中并在 api/hooks/custom/index.js、api/helpers/send-template-email.js 等中使用这些变量、sails.config.custom、mailgunSecret 和sails.config.custom.mailgunDomain。

于 2020-07-16T12:55:53.653 回答
0

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

于 2020-11-16T21:57:17.730 回答