在Node.js中发送电子邮件到localhost smtp服务器

我正在使用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服务器的本地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”)时,我看不到“收到”。

我错过了什么让它工作?

您可能需要在选项上定义身份validation处理程序

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

了解关于onAuth参数的更多信息

如果您收到self signed certificate错误,则可能需要在发送电子邮件之前将其包含在内:

 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";