【问题标题】:SMTP connection with node与节点的 SMTP 连接
【发布时间】:2014-11-30 10:18:26
【问题描述】:

我正在尝试在不使用特定 node-smtp 库的情况下将我的客户端连接到 gmail smtp 服务器(我想了解套接字和 smtp 是如何工作的),但是在设置到服务器的连接后,无论我得到什么响应都没有写入套接字。 这是我的代码的一部分:

var options = {
    host: 'smtp.gmail.com',
    username: 'mylogin@gmail.com',
    password: 'mypass',
    port: 25
    },
    net = require('net');

exports.addEmail = function(req, res) {

    var client = net.connect(options.port, options.host, function() {
        console.log('CONNECTED TO: ' + options.host + ':' + options.port);
        //i can write to a socket anything, still no response
        client.write('HELO smtp.gmail.com');
    });

    client.on('data', function(data) {
        console.log('DATA: ' + data);
    });

    client.on('error', function(err) { console.log(err );})

    client.on('close', function() {
        console.log('Connection closed');
    });
}

我在控制台中得到的是: 连接到:smtp.gmail.com:25 数据:220 mx.google.com ESMTP n7sm5406410lae.47 - gsmtp

就是这样 - 没有错误,没有 5xx 或 4xx 响应,建立连接后只有 220,我不明白为什么会发生这种情况,非常感谢您的帮助。

【问题讨论】:

  • 端口错误!使用465ssl: true,而不是25。还有,你想用这个代码做什么??
  • 如果您想了解 SMTP 的工作原理,请先阅读并了解相关标准RFC2821,然后开始编码。这比尝试一些不符合标准的写入然后想知道为什么它不起作用要好。一些提示:不要忘记发送行尾。
  • @Ravi 这只是一段代码,我想将任何数据(甚至不正确)发送到 smtp 服务器并获得任何响应。在我弄清楚如何做之后,我会尝试将正确的电子邮件数据发送到服务器。如何启用 ssl?
  • @SteffenUllrich 非常感谢您的评论 - 服务器没有回复,因为我没有在我的消息中放置行尾。
  • @AndreiHrabouski 有一些预构建的模块,您可以在您的应用程序中使用它们。例如 Node Mailer ,使用前必须阅读它的文档。

标签: node.js sockets email smtp gmail


【解决方案1】:

作为未来读者的参考,您需要在命令末尾添加回车符 (\r) 和换行符 (\n):

client.write('HELO smtp.gmail.com\r\n');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-01
    • 2019-03-14
    • 2014-05-25
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多