首页 > 解决方案 > 为什么“nodemailer”不发送任何消息?

问题描述

这是代码:

var nodemailder = require('nodemailer');
var from = nodemailder.createTransport({
    service: "gmail",
    auth:{
        user: 'user***@gmail.com',
        pass: 'pass***'
    }
});
var options = {
     from: 'user***@gmail.com',
     to: 'user***@gmail.com',
     subject: 'sometext',
     text: 'messageContext',
};
from.sendMail(options, function (error, info) {
     if (error) {
            console.log(error);
     } else {
            console.log('Email sent: ' + info.response);
     }
});

如果我使用 Windows - 它可以工作,当我尝试在 Ubuntu (16) 上启动时 - 我没有收到任何错误消息等,但没有收到邮件。

标签: node.jsnodemailer

解决方案


如果是这种情况,我相信 SMTP 服务无法连接到端口 25 上的连接。

运行服务器将如下所示:

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xxxx.de ESMTP Postfix
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

如果没有服务器监听这个端口,它会是这样的:

$ telnet localhost 25
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

这意味着您的服务可能未运行或未启用。您需要首先在端口 25 上启用/运行此服务。

此外,根据 nodemail 文档,您也可以使用 sendmail 二进制文件:

'sendmail' alternative

Alternatively if you don't want to use SMTP but the sendmail

命令然后将属性 sendmail 设置为 true(如果命令不在默认路径中,则设置为 sendmail 的路径)。

nodemailer.sendmail = true;

or

nodemailer.sendmail = '/path/to/sendmail';

If sendmail is set, then SMTP options are discarded. 

供参考,https://nodemailer.com/transports/sendmail/


推荐阅读