Я использую Telnet-клиент для проверки электронной почты, я подключаюсь к серверу, и он отвечает 250, но когда я пишу другую команду и прошу ответа, она просто не отвечает мне.
Это мой код:
function ConnectTelnet(){
//var connection = new telnet();
var response;
var HOST = 'mail.dominio.com';
var PORT = 25;
var net = require('net');
var client = net.connect(25,'mail.dominio.com',function(){
console.log('connected to server!');
console.log('CONNECTED TO: ' + HOST + ':' + PORT);
client.on('data', function(data) {
console.log('Received: ' + data);
response = data;
if(response.indexOf("220") === -1){
client.write('EHLO dominio.com')
console.log(data)
}
});
})
}
Кто-нибудь знает, как я могу продолжить? Спасибо :)
Вы не можете отправить данные, получить ответ и затем отправить больше данных по тому же соединению. TCP не отправляет сообщения "отдельно". TCP - это протокол потока, что означает, что при записи байтов в сокет вы получаете одинаковые байты в том же порядке на принимающей стороне. Не существует понятия "границы сообщений" или "пакеты" что-либо в этом роде.
Если вы хотите это сделать, вам нужно каждый раз создавать новое соединение.
Вот как я сделал, чтобы отправить несколько EHLO по тому же соединению:
const net = require('net');
const client = net.createConnection({ host: '127.0.0.1', port: 1025 }, () => {
console.log('connected to server!');
checkEHLO(client, [ '[email protected]', '[email protected]', '[email protected]' ]);
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('disconnected from server');
});
function checkEHLO(client, emails){
emails.forEach((email) => {
client.write('EHLO ' + email + '\n');
});
}
И это был ответ, который я получил:
connected to server!
220 127.0.0.1 ESMTP Service Ready
250-Hello [email protected]
250-PIPELINING
250-8BITMIME
250-STARTTLS
250 AUTH PLAIN LOGIN
250-Hello [email protected]
250-PIPELINING
250-8BITMIME
250-STARTTLS
250 AUTH PLAIN LOGIN
250-Hello [email protected]
250-PIPELINING
250-8BITMIME
250-STARTTLS
250 AUTH LOGIN PLAIN
client.write
?