2014-10-06 3 views
2

Я пытаюсь подключить своего клиента к серверу smtp gmail, не используя определенные узлы-smtp-библиотеки (я хочу понять, как работают сокеты и smtp), но после установки соединения с сервером я получаю нет ответа, я пишу в сокет. Это часть моего кода:SMTP-соединение с узлом

var options = { 
    host: 'smtp.gmail.com', 
    username: '[email protected]', 
    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'); 
    }); 
} 

Что я получаю в консоли: CONNECTED TO: smtp.gmail.com:25 ДАННЫЕ: 220 mx.google.com ESMTP n7sm5406410lae.47 - gsmtp

Это все - никаких ошибок, нет ответов 5xx или 4xx, только 220 после установления соединения, и я не понимаю, почему это происходит. Я буду очень признателен за вашу помощь.

+0

неправильный порт! используйте '465' и' ssl: true', вместо '25'. А также, ЧТО ВЫ ХОТИТЕ СДЕЛАТЬ С ЭТОМ КОДОМ? – Ravi

+0

Если вы хотите узнать, как работает SMTP, сначала прочитайте и поймите соответствующий стандарт [RFC2821] (https://www.ietf.org/rfc/rfc2821.txt), а затем начните кодирование. Это лучше, чем попытки некоторых записей, которые не соответствуют стандарту, а затем задаются вопросом, почему это не работает. Некоторые подсказки: не забудьте отправить концы строк. –

+0

@Ravi это всего лишь фрагмент кода, который я хочу отправить на сервер smtp любые данные (даже некорректные) и получить любой ответ. После того, как я выясню, как это сделать, я попытаюсь отправить правильные данные электронной почты на сервер. Как включить ssl? –

ответ

2

В качестве эталона для будущих читателей, вы должны добавить возврата каретки (\ г) и символ новой строки (\ п) символов в конце вашей команды:

client.write('HELO smtp.gmail.com\r\n'); 
Смежные вопросы