crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Подключение к серверу IMAP
Гость_axon_*
сообщение 26.3.2011, 17:55
Сообщение #1





Гости








    


Пытаюсь разобраться с протоколом 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);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 28.3.2011, 9:33
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


Согласно протоколу каждая команда должна заканчиваться CR LF (\r\n) у тебя видимо это не посылается.
Попробуй так

QByteArray data = ui->send->text().toAscii() + "\r\n";
imapSocket->write(data);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
crashsp
  опции профиля:
сообщение 18.7.2011, 22:02
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 23.10.2010
Пользователь №: 2144

Спасибо сказали: 8 раз(а)




Репутация:   546  


У меня таже история приветствие получил но авторизоваться не могу пишет
LOGIN BAD command syntax error. sc=pokTmKo7S4Y1

Синтаксис вроде верен socket->write("LOGIN bla-bla@yandex.ru password\r\n");

Не кто не сталкивался ?
Evоlution получает и отправляет без проблемм...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 1.8.2011, 11:13
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


После приветствия каждая команда должна иметь свой номер в префиксе.

Например

* 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 11:43