在Node.js中向本地SMTP服务器发送电子邮件

5

我正在使用nodemailer发送电子邮件:

var nodemailer = require('nodemailer'),
config = require('./mailer.conf');

var smtpTransport;

console.log('Creating Transport');

//smtp transport configuration
var smtpTransport = nodemailer.createTransport({
    host: config.host,
    port: config.port,
    auth: {
        user: config.email,
        pass: config.password
    }
});

//Message
var message = {
    from: "me@localhost.com",
    replyTo: "me@localhost.com",
    to: "me@localhost",
    subject: "hello"
};

console.log('Sending Mail');
// Send mail
smtpTransport.sendMail(message, function(error, info) {
    if (error) {
        console.log(error);
    } else {
        console.log('Message sent successfully!');
        console.log('Server responded with "%s"', info.response);
    }
    console.log('Closing Transport');
    smtpTransport.close();
});

我还有一个使用smtp-server的本地SMTP服务器:

var SMTPServer = require('smtp-server').SMTPServer;

var server = new SMTPServer({
    onData: function(stream, session, callback) {
        console.log('received');
    }
});

server.listen(465);
console.log('listening');

当我向本地SMTP服务器发送电子邮件(注意:客户端代码中的“me@localhost”)时,我没有看到“received”的标志。我错过了什么使它能够工作?

你最终解决了这个问题吗? - niczak
@NicholasKreidberg 还没有,但是已经在我的待办列表中了。 - Rafael Angarita
1个回答

2
您可能需要在选项中定义身份验证处理程序。
var server = new SMTPServer({
    onAuth: function(auth, session, callback) {
        callback(null, { user : auth });
    },
    onData: function(stream, session, callback) {
        console.log('received');
    },
});

了解有关onAuth参数的更多信息。

如果您遇到“自签名证书”错误,在发送电子邮件之前,您可能需要包含以下内容:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

设置 NODE_TLS_REJECT_UNAUTHORIZED 是一个不好的想法,因为它适用于整个节点应用程序。如果您遇到了像 @Khalid 提到的 self signed certificate 错误,您可以将 tls: { rejectUnauthorized: false } 添加到 createTransport 选项对象中。 - kingliam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接