File indexing completed on 2024-05-26 05:28:39
0001 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net> 0002 0003 This file is part of the Trojita Qt IMAP e-mail client, 0004 http://trojita.flaska.net/ 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public License as 0008 published by the Free Software Foundation; either version 2 of 0009 the License or (at your option) version 3 or any later version 0010 accepted by the membership of KDE e.V. (or its successor approved 0011 by the membership of KDE e.V.), which shall act as a proxy 0012 defined in Section 14 of version 3 of the license. 0013 0014 This program is distributed in the hope that it will be useful, 0015 but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 GNU General Public License for more details. 0018 0019 You should have received a copy of the GNU General Public License 0020 along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 */ 0022 #ifndef SMTP_H 0023 #define SMTP_H 0024 0025 #include "AbstractMSA.h" 0026 #include "qwwsmtpclient/qwwsmtpclient.h" 0027 0028 namespace MSA 0029 { 0030 0031 class SMTP : public AbstractMSA 0032 { 0033 Q_OBJECT 0034 public: 0035 SMTP(QObject *parent, const QString &host, quint16 port, bool encryptedConnect, bool startTls, bool auth, 0036 const QString &user); 0037 void sendMail(const QByteArray &from, const QList<QByteArray> &to, const QByteArray &data) override; 0038 0039 bool supportsBurl() const override; 0040 void sendBurl(const QByteArray &from, const QList<QByteArray> &to, const QByteArray &imapUrl) override; 0041 public slots: 0042 void cancel() override; 0043 void setPassword(const QString &password) override; 0044 void handleDone(bool ok); 0045 void handleError(QAbstractSocket::SocketError err, const QString &msg); 0046 void handleSslErrors(const QList<QSslError>& errors); 0047 private: 0048 QwwSmtpClient *qwwSmtp; 0049 QString host; 0050 quint16 port; 0051 bool encryptedConnect; 0052 bool startTls; 0053 bool auth; 0054 QString user; 0055 QString pass; 0056 bool failed; 0057 QByteArray from; 0058 QList<QByteArray> to; 0059 QByteArray data; 0060 bool isWaitingForPassword; 0061 enum { MODE_SMTP_INVALID, MODE_SMTP_DATA, MODE_SMTP_BURL } sendingMode; 0062 0063 void sendContinueGotPassword(); 0064 0065 SMTP(const SMTP &); // don't implement 0066 SMTP &operator=(const SMTP &); // don't implement 0067 }; 0068 0069 class SMTPFactory: public MSAFactory 0070 { 0071 public: 0072 SMTPFactory(const QString &host, quint16 port, bool encryptedConnect, bool startTls, bool auth, 0073 const QString &user); 0074 virtual ~SMTPFactory(); 0075 AbstractMSA *create(QObject *parent) const override; 0076 private: 0077 QString m_host; 0078 quint16 m_port; 0079 bool m_encryptedConnect; 0080 bool m_startTls; 0081 bool m_auth; 0082 QString m_user; 0083 }; 0084 0085 } 0086 0087 #endif // SMTP_H