nodejs smtp-server 电子邮件已发送但未收到

fir*_*sal 3 smtp node.js nodemailer

const nodemailer = require('nodemailer');

const SMTPServer = require("smtp-server").SMTPServer;

const server = new SMTPServer({
    onAuth(auth, session, callback) {
        if (auth.username !== "test" || auth.password !== "password") {
            return callback(new Error("Invalid username or password"));
        }
        console.log(mailOptions.text);
        callback(null, {
            user: "test"

        }); // where 123 is the user id or similar property
    }
});

server.on("error", err => {
    console.log("Error %s", err.message);
});

server.listen(26);


var transporter = nodemailer.createTransport({
    host: "MYDOMAINNAME/IP",
    port: 26,
    secure: false,
    auth: {
        user: "test",
        pass: "password"
    },
    tls: {
        rejectUnauthorized: false
    }
});

var mailOptions = {
    from: '"MYSITENAME"<info@MYDOMAIN.com>',
    to: 'ADRESS@TLD.com',
    subject: 'Sending Email using Node.js',
    text: 'That was easy!'
};

transporter.sendMail(mailOptions, function (error, info) {
    if (error) {
        console.log("sendmail" + error);
    } else {
        console.log('Email sent: ' + info.response);
    }
});
Run Code Online (Sandbox Code Playgroud)

输出是:这很容易!电子邮件已发送:250 OK:消息已排队

我只想将带有输入变量的邮件作为文本从我的域名发送到普通的 Gmail 地址;gmail/或任何其他地址未收到邮件;检查垃圾邮件文件夹;

小智 5

对于遇到同样问题但使用 Nodemailertransporter方式的人,我解决了这个问题,将name服务器添加到传输对象中。


    const transportObj = {
      name: credentials.host, // in my case, the host and the name are the same
      host: credentials.host,
      port: credentials.port,
      secure: true,
      auth: {
          user: credentials.user,
          pass: credentials.pass
      },
}

const transporter = nodemailer.createTransport(transportObj)

transporter.sendMail(...)

Run Code Online (Sandbox Code Playgroud)

该解决方案与此处相关