Nodemailer 无法与本地 smtp 服务器配合使用

Nodemailer 无法与本地 smtp 服务器配合使用

我已经在 Linux 机器上设置了本地 smtp 服务器。以下命令有效并成功接收来自 test@<machine-name> 的邮件。

echo “THIS IS A TEST EMAIL” | mail -s "This is subject" [email protected]

而我需要使用nodemailer下面配置的方法来发送邮件,

    const transporter = nodemailer.createTransport({
        host:"smtp.<ourserver>.com",
        secure:false
    });
    const info = await transporter.sendMail({
        from: 'test@<machine-name>', // sender address
        to: '[email protected]', // list of receivers
        subject: "Hello", // Subject line
        html: "<i>Hello world</i>" // html body
    });

但我收到以下错误,

在此处输入图片描述

知道我为什么会遇到这个问题吗?

我在 quora 上看到过类似的问题,但没有一个能解决我的问题。

电子邮件,它适用于以下配置,

  const { SMTPClient } = require('emailjs');
  const client = new SMTPClient({
       host: 'smtp.<ourserver>.com',
       ssl: false,
       tls: false
  });
  client.send(
    {
       text: 'Hello',
       from: 'test@<machine-name>',
       to: '[email protected]',
       subject: 'Hello',
    },
    (err, message) => {
         //
    }
 );

我怎样才能让它工作nodemailer

答案1

您必须添加代码来监听回声,然后:

const auth = {
user: "[email protected]",
pass: "password"
};

const transporter = require('nodemailer').createTransport({
host: "smtp.<ourserver>.com",
port: 587,
auth
});


transporter.verify(function (error, _) {
    console.error(error);
}

const data = {
        to: "<[email protected]>,
        from: 'User Name <' + auth.user + '>',
        date: "<date>",
        subject: "Subject"
    };
transporter.sendMail(data, (response) => {});

答案2

安装 nodemailer 应用程序可能会解决此问题。安装应用程序时,它会自动在后台进行一些设置。要安装该应用程序,只需安装 snapcraft 包并输入 sudo snap install nodemailerapp

相关内容