【发布时间】:2019-11-26 18:58:22
【问题描述】:
对于完整的注册确认,我正在尝试向即将唱歌的用户发送确认邮件。我正在使用 node.js,对于邮件发送,我尝试了 nodemailer 和 mailgun-js。在 localhost 上进行测试时,任何一个 nodemailer/mailgun 都可以正常工作,电子邮件可以完美发送。但是,一旦我部署它(在带有 ubuntu 的 azure 虚拟机上)电子邮件不会发送。我尝试了许多不同的方法,但都没有成功:都具有相同的行为:邮件在本地主机上发送,但从每个特定文档中使用 相同代码 从实时服务器运行时没有任何反应。是什么阻止了服务器发送电子邮件?
一个更重要的线索:在服务器上,使用带有swaks 的命令行,邮件发送成功。 另外一个独立的 js 文件,其中包含用于从服务器发送电子邮件的代码。
var API_KEY = 'MY_API_KEY';
var DOMAIN = 'MY_DOMAIN_NAME';
var HOST = 'MY_EU_HOST';
var mailgun = require('mailgun-js')({apiKey: API_KEY, domain: DOMAIN, host: HOST});
const data = {
from: 'Excited User <me@samples.mailgun.org>',
to: 'foo@example.com',
subject: 'Hello',
text: 'Testing some Mailgun awesomeness!'
};
mailgun.messages().send(data, (error, body) => {
console.log(body);
});
更新:我让它工作的唯一方法是使用mailgun.js 而不是mailgun-js。问题仍然存在,因为隔离发送邮件节点脚本也适用于 mailgun-js。问题是 mailgun.js 在项目中可以工作,而 mailgun-js 不能。我非常不清楚为什么会发生这种情况,并且仍然会对两者之间的差异进行任何解释。为了解决这个问题,mailgun official documentation 在他们的示例中有 require('mailgun-js') 和 NOT require('mailgun.js')
【问题讨论】:
标签: node.js azure virtual-machine mailgun nodemailer