© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
5 мая 2017 г. 19:50

Как реализовать отправку e-mail

Подскажите как правильно сделать отправку email сообщений. Может через класс QNetworkAccessManager? С помощью GET или POST запроса. Классов в QT я не нашел. Может конечно плохо искал.

  • #
  • Ответ был помечен как решение
  • 5 мая 2017 г. 21:50

2 варианта, либо писать собственный класс работы с SMTP, либо работать с апишками почтовых служб(GMail, Яндекс.Почта и д.р.)

Да. В Qt для SMTP ничего не делалось. И в документации сказано, что можно самостоятельно реализовать необходимые протоколы с использованием QTcpSocket и т.д.

На GitHub есть один проект для работы с SMTP из-под Qt . Думаю, что он может вам помочь.

Возможно что уже и нет необходимости в почтовом клиенте, но в своё время так же столкнулся с данной проблемой в QT. Нашел один интересный проект под названием libqxt, там реализовано довольно много интересных вещей, в том числе почтовый клиент. Далее привожу ссылки:

1) Сам проект;

2) Отделённый от проекта клиент.

Подключил SMTP из-под Qt при отправке сообщения

QAbstractSocket::waitForBytesWritten() is not allowed in UnconnectedState
QAbstractSocket::waitForBytesWritten() is not allowed in UnconnectedState
QAbstractSocket::waitForBytesWritten() is not allowed in UnconnectedState

А порт указали, через который посылать информацию? Такая ошибка с QAbstractSocket может быть из-за неправильно настроенного порта, через который должна пересылаться информация.

Прописаны порты

SmtpClient smtp("smtp.gmail.com", 465, SmtpClient::SslConnection);
и
SmtpClient(const QString & host = "localhost", int port = 25, ConnectionType ct = TcpConnection);

Поставил последнюю версию, но не работает.


[SmtpClient] State: ConnectingState

[Socket] State: QAbstractSocket::HostLookupState

[Socket] State: QAbstractSocket::ConnectingState

Failed to connect to host!

Failed to login!

Failed to send mail!

[SmtpClient] State: DisconnectingState

[Socket] OUT: "QUIT"

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
22 июля 2018 г. 20:56
Тарас

C++ - Тест 001. Первая программа и типы данных

  • Результат 73баллов,
  • Очки рейтинга1
22 июля 2018 г. 18:29
Kaptn

C++ - Тест 003. Условия и циклы

  • Результат 100баллов,
  • Очки рейтинга10
22 июля 2018 г. 7:48
Kaptn

C++ - Тест 003. Условия и циклы

  • Результат 64баллов,
  • Очки рейтинга-1
Последние комментарии
18 июля 2018 г. 12:45
plgrm44

Qt/C++ - Урок 050. Логирование событий Qt приложения в текстовый файл

А что мешает сохранить адрес дефолтного обработчика и после вывода в файл вызывать и его?
17 июля 2018 г. 13:34
Arrow

Qt/C++ - Урок 049. QTranslator - динамический перевод мультиязычного приложения на Qt

Работает так: find_package (Qt5LinguistTools)file (GLOB TS_FILES ${SOURCE_DIR}/translations/*.ts)qt5_add_translation (QM_FILES ${TS_FILES})add_custom_target (translations ALL DEPE...
17 июля 2018 г. 9:53
Илья Чичак

Django - Урок 035. Различные шаблоны для рендеринга разных типов контента в поисковой выдаче

тут все упирается в то, что вы хотите дать поисковым роботам. был у меня опыт проектирования страницы для роботов - сделал точки входа - со статикой для роботов и АПИ для JS клиента=) а отлавл...
17 июля 2018 г. 9:43
Евгений Легоцкой

Django - Урок 035. Различные шаблоны для рендеринга разных типов контента в поисковой выдаче

Думаю, что это всё равно стоит оставить для индексирующих роботов поисковых систем, которые испоьлзуют простые GET запросы. Они же AJAX не используют. Так что полностью уйти от этого не получи...
Сейчас обсуждают на форуме
23 июля 2018 г. 11:24
Arrow

QComboBox делегат для QTableView

И можно еще один маленький вопрос: Как изменить значение в ячейке QTableView?
23 июля 2018 г. 8:56
Arrow

Получение прав пользователей на таблицу базы данных

Да, только самый основной прикол в том что для возможности редактирования таблицы пользователю одних прав на таблицу мало, нужны еще и на последовательность: GRANT USAGE O...
23 июля 2018 г. 8:52
Евгений Легоцкой

Перестал работать Qt Maintenance Tool

В настройках есть параметры прокси, возможно, через них сможете завести, через какой-нибудь прокси сервер. По поводу списка репозиториев. сам не в курсе. Спросил на официальном форум...
23 июля 2018 г. 7:59
Евгений Легоцкой

Qt Android

Так, по поводу ошибок, там в main.cpp ещё одна ошибка у вас Надо так написать QQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/main.qml")));DBase myClas...
23 июля 2018 г. 6:44
Евгений Легоцкой

как проверить состояние у динамически созданного CheckBox в qml

Тогда можно расширить эту модель, наследоваться от неё. И добавить в качестве роли ещё и состояние чекбокса, для выбора. Также можно переопределить метод setData, чтобы можно было ус...

Рекомендуемые страницы