Russian Qt Forum

Qt => Работа с сетью => Тема начата: Snak2013 от Февраль 14, 2018, 08:37



Название: QSslSocket и smtp
Отправлено: 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). Подскажите пожалуйста где я ошибся.


Название: Re: QSslSocket и smtp
Отправлено: Apktyc от Февраль 14, 2018, 12:39
Ванга мод: приложению не хватает libeay32.dll, ssleay32.dll (проживают в %QtPath%\Tools\%mingw%\opt\bin)

1) Проверяйте ошибки соединения: сигнал sslErrors (http://doc.qt.io/qt-5/qsslsocket.html#sslErrors-1).
2) Начиная зашифрованное соединение, ожидать тоже стоит его: QSslSocket::waitForEncrypted (http://doc.qt.io/qt-5/qsslsocket.html#waitForEncrypted).
3) Нужно больше асинхронности, хоть это и не точно.
4) Раз Вас тянет в эту степь, помните, порт 465 обычно implicitTLS, порт 587 обычно explicitTLS (т.е. нужно незашифрованное соединение, команда STARTTLS и т.д.)


Название: Re: QSslSocket и smtp
Отправлено: Snak2013 от Февраль 14, 2018, 13:02
Спасибо попробую


Название: Re: QSslSocket и smtp
Отправлено: Snak2013 от Февраль 14, 2018, 14:01
Apktyc, и еще раз спасибо ваш Ванга мод сработал на ура, я добавил libeay32.dll, ssleay32.dll в папку к своему приложению и удачно получил ответ от сервера.
Также потребовалось добавить libgcc_s_dw2-1.dll и libwinpthread-1.dll