邮件(nodemailer / maigun-js)不从Node发送

为获得完整的注册确认,我正在尝试向要唱歌的用户发送确认邮件。我正在使用node.js,并且对于邮件发送,我已经尝试了nodemailermailgun-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') require('mailgun.js')

cc4400092 回答:邮件(nodemailer / maigun-js)不从Node发送

是的,如果您使用的是第三方电子邮件服务,则与Azure VM的端口25无关。

无论您是通过示例js还是通过API调用电子邮件功能,它都应使用相同的协议。根据您的代码,我编写了一个示例API,该API用于将电子邮件发送到我的邮箱,并在Azure Linux(ubuntu 18.04)VM上托管该API:

var express = require('express');
var app = express();

app.get('/email',function (req,res) {

    const mailgun = require("mailgun-js");
    const DOMAIN = "sandbox3b95c6dff0fb4b4a8aaa3c59a7eb9abc.mailgun.org";
    const mg = mailgun({apiKey: "<key here>",domain: DOMAIN});
    const data = {
        from: "Mailgun Sandbox <postmaster@sandbox3b95c6dff0fb4b4a8aaa3c59a7eb9abc.mailgun.org>",to: "<my email address>",subject: "Hello",text: "Testing some Mailgun awesomness!"
    };
    mg.messages().send(data,function (error,body) {
        console.log(body);
    });


   res.end("email has been sent!!!");
})

var server = app.listen(8081,function () {
   var host = server.address().address
   var port = server.address().port
   console.log("Example app listening at http://%s:%s",host,port)
})

如您所见,我的节点服务器侦听8081端口,因此我在VM网络安全组上启用了8081端口(您可以将其视为Azure平台级防火墙): enter image description here 使用get方法直接调用API: enter image description here Azure VM端收到请求: enter image description here 已成功收到电子邮件: enter image description here

似乎一切正常,希望对您有所帮助。

本文链接:https://www.f2er.com/3026519.html

大家都在问