Russian Qt Forum
Ноябрь 22, 2024, 19:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSslSocket и smtp  (Прочитано 4525 раз)
Snak2013
Гость
« : Февраль 14, 2018, 08:37 »

Доброго времени суток, пытаюсь работать с smtp сервером через QSslSocket следующим образом:
Код:
QSslSocket* socket = new QSslSocket(this);
socket->connectToHostEncrypted("smtp.yandex.com", 465);
if (socket->waitForConnected(-1))
{
if (socket->waitForReadyRead(-1))
{
while (socket->canReadLine())
{
QString responseText = socket->readLine();
}
}
}
Соединение с сервером происходит нормально "waitForConnected" отрабатывает успешно, но ответ от сервера не приходит вообще (после соединения smtp должен вернуть код готовности к работе 220). Подскажите пожалуйста где я ошибся.
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #1 : Февраль 14, 2018, 12:39 »

Ванга мод: приложению не хватает libeay32.dll, ssleay32.dll (проживают в %QtPath%\Tools\%mingw%\opt\bin)

1) Проверяйте ошибки соединения: сигнал sslErrors.
2) Начиная зашифрованное соединение, ожидать тоже стоит его: QSslSocket::waitForEncrypted.
3) Нужно больше асинхронности, хоть это и не точно.
4) Раз Вас тянет в эту степь, помните, порт 465 обычно implicitTLS, порт 587 обычно explicitTLS (т.е. нужно незашифрованное соединение, команда STARTTLS и т.д.)
Записан
Snak2013
Гость
« Ответ #2 : Февраль 14, 2018, 13:02 »

Спасибо попробую
Записан
Snak2013
Гость
« Ответ #3 : Февраль 14, 2018, 14:01 »

Apktyc, и еще раз спасибо ваш Ванга мод сработал на ура, я добавил libeay32.dll, ssleay32.dll в папку к своему приложению и удачно получил ответ от сервера.
Также потребовалось добавить libgcc_s_dw2-1.dll и libwinpthread-1.dll
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.