首页 > 解决方案 > NodeJS 从本地 SMTP 服务器发送电子邮件

问题描述

所以我一直在制作一个应该发送验证电子邮件的应用程序,但我不知道如何处理它。我见过人们使用 Gmail 和组合nodemailer来发送消息,但我不想依赖谷歌。

我已经看到了smtp-server将创建一个简单的 smtp 服务器的软件包,但是到目前为止,我已经让它接收电子邮件并从它自己接收电子邮件,可以这么说,但不能从我的本地 SMTP 服务器发送电子邮件,比如说, Gmail 或雅虎。

到目前为止,我的代码看起来像这样:

const smtpServer = require('smtp-server');
const mailparser = require('mailparser');
const nodemailer = require('nodemailer');
const a = new smtpServer.SMTPServer({
    onData(stream, session, callback) {
        mailparser.simpleParser(stream, (err, main) => {
            console.log("An email was received:");
            console.log("    From: " + main.from.text);
            console.log("    To: " + main.to.text);
            console.log("    Text: " + main.text);
            callback(err);
        });
    },
    onAuth: function (auth, session, callback) {
        callback(null, { user: auth });
    },
    disabledCommands: ['AUTH']
});
a.listen(587, '192.168.....');

nodemailer
    .createTransport( {
        host: "My public ip",
        port: 587,
        secure: false,
        auth: {
            user: "username",
            pass: "password"
        },
        tls: {
            rejectUnauthorized: false
        }
    })
    .sendMail({
        from: '"Verification" <verification@test.com>',
        to: 'my.email@gmail.com',
        html: `Test`,
        headers: {
        }
    })
    .catch(e => console.log(e));

问题是,现在我的服务器收到我发送的消息,而不是谷歌的。我知道我做错了什么,但我该如何解决呢?

标签: node.jsemail

解决方案


推荐阅读