使用出站 Node-RED 电子邮件发送到本地 SMTP 服务器

Using outbound Node-RED email to local SMTP server

我有一个用于测试目的的本地 SMTP 电子邮件服务器 运行在我的机器上。它在端口 25 上侦听 SMTP。我可以使用常规电子邮件客户端向它发送和接收电子邮件。

当我构建包含电子邮件输出节点的 Node-RED 流并配置其属性时:

to: <email address> server: localhost port: 25

并提交流程,我收到错误:

25 Feb 16:43:24 - [error] [e-mail:<email address>] Error: 101057795:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:794:

我不知道如何进行。查看消息,似乎这里有某种形式的 SSL negotiation/test 在起作用。在我的 SMTP 服务器上打开跟踪,我每次尝试 运行 流时都会发现以下日志:

"TCPIP" 10708 "2016-02-25 16:43:08.294" "TCP - 127.0.0.1 connected to 127.0.0.1:25." "DEBUG" 10708 "2016-02-25 16:43:08.298" "Creating session 22" "SMTPD" 10708 22 "2016-02-25 16:43:08.298" "127.0.0.1" "SENT: 220 WIN7-X64 ESMTP" "DEBUG" 9772 "2016-02-25 16:43:08.299" "Ending session 22"

Node-RED 节点似乎正在发送连接请求,取回 SMTP 220 响应,然后立即失败。

我看到 Dave 已经回复了 github issue 但只是为了结束这个问题的循环。

此时(2016 年 2 月)节点假定 SSL 始终可用并启用,在某些时候我们需要返回电子邮件节点并找到一种简单的方法来公开更多的 nodemailer 选项以允许连接到更广泛的电子邮件提供商,包括 public 和私人。

我遇到了同样的问题,并且遇到了一个令人讨厌的黑客攻击,可以使邮件通过我本地交换服务器的普通 SMTP,无需身份验证。

编辑 .../61-email.js 文件并进行如下更改:

   var smtpTransport = nodemailer.createTransport({
        host: node.outserver,
        port: node.outport,
        secure: false,
        ignoreTLS: true //,
    //    auth: {
    //        user: node.userid,
    //        pass: node.password
    //    }
    });