Пытаюсь разобраться с протоколом imap4. Подключаюсь к серверу с помощью tcp-сокета. Ответы сервера добавляю в QTextWidget. Получаю приветствие, но сервер практически не реагирует на мои запросы. Подскажите в чем проблема?
Вот основной код:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
imapSocket = new QTcpSocket(this);
imapSocket->connectToHost(QHostAddress("127.0.0.1"), 143);
connect(imapSocket, SIGNAL(readyRead()), SLOT(readMessage()));
}
MainWindow::~MainWindow()
{
delete ui;
imapSocket->close();
}
void MainWindow::on_ok_clicked()
{
qDebug() << imapSocket->state();
if(ui->send->text().isEmpty()) return;
QByteArray data = ui->send->text().toAscii();
imapSocket->write(data);
ui->send->clear();
}
void MainWindow::readMessage()
{
QByteArray datagram;
datagram = imapSocket->readAll();
QString ans(datagram);
ui->answer->append(ans);
}
Согласно протоколу каждая команда должна заканчиваться CR LF (\r\n) у тебя видимо это не посылается.
Попробуй так
QByteArray data = ui->send->text().toAscii() + "\r\n";
imapSocket->write(data);
У меня таже история приветствие получил но авторизоваться не могу пишет
LOGIN BAD command syntax error. sc=pokTmKo7S4Y1
Синтаксис вроде верен socket->write("LOGIN bla-bla@yandex.ru password\r\n");
Не кто не сталкивался ?
Evоlution получает и отправляет без проблемм...
После приветствия каждая команда должна иметь свой номер в префиксе.
Например
* OK localhost IMAP4rev1 v12.250 server ready
a001 LOGIN katie boxcar
a001 OK LOGIN completed
a002 LOGOUT
* BYE shadrach.smallorg.org IMAP4rev1 server terminating connection
a002 OK LOGOUT completed
В данном случае мы посылаем команду авторизации с номером а001
получаем ответ с номером а001
Посылаем команды выхода с номером а002
получаем ответ с номером а002
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)