【问题标题】:Send email to localhost smtp server in Node.js在 Node.js 中向 localhost smtp 服务器发送电子邮件
【发布时间】:2017-02-19 09:07:46
【问题描述】:

我正在使用 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”)。

为了让它发挥作用,我缺少什么?

【问题讨论】:

  • 你有想过这个问题吗?
  • @NicholasKreidberg 还没有,但它在我的待办事项列表中。

标签: node.js smtp nodemailer


【解决方案1】:

您可能需要在选项中定义身份验证处理程序

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

了解更多关于onAuth params

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

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

【讨论】:

  • 设置NODE_TLS_REJECT_UNAUTHORIZED 是个坏主意,因为它适用于整个节点应用程序。如果您遇到@Khalid 提到的self signed certificate 错误,您可以将tls: { rejectUnauthorized: false } 添加到createTransport 选项对象中。
猜你喜欢
  • 2017-01-30
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
相关资源
最近更新 更多