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