在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";