1 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net> 2 3 This file is part of the Trojita Qt IMAP e-mail client, 4 http://trojita.flaska.net/ 5 6 This program is free software; you can redistribute it and/or 7 modify it under the terms of the GNU General Public License as 8 published by the Free Software Foundation; either version 2 of 9 the License or (at your option) version 3 or any later version 10 accepted by the membership of KDE e.V. (or its successor approved 11 by the membership of KDE e.V.), which shall act as a proxy 12 defined in Section 14 of version 3 of the license. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. 21 */ 22 #ifndef SENDMAIL_H 23 #define SENDMAIL_H 24 25 #include "AbstractMSA.h" 26 27 #include <QProcess> 28 #include <QStringList> 29 30 namespace MSA 31 { 32 33 class Sendmail : public AbstractMSA 34 { 35 Q_OBJECT 36 public: 37 Sendmail(QObject *parent, const QString &command, const QStringList &args); 38 virtual ~Sendmail(); 39 virtual void sendMail(const QByteArray &from, const QList<QByteArray> &to, const QByteArray &data); 40 private slots: 41 void handleError(QProcess::ProcessError e); 42 void handleBytesWritten(qint64 bytes); 43 void handleStarted(); 44 void handleFinished(const int exitCode); 45 public slots: 46 virtual void cancel(); 47 private: 48 QProcess *proc; 49 QString command; 50 QStringList args; 51 QByteArray dataToSend; 52 int writtenSoFar; 53 54 Sendmail(const Sendmail &); // don't implement 55 Sendmail &operator=(const Sendmail &); // don't implement 56 }; 57 58 class SendmailFactory: public MSAFactory 59 { 60 public: 61 SendmailFactory(const QString &command, const QStringList &args); 62 virtual ~SendmailFactory(); 63 virtual AbstractMSA *create(QObject *parent) const; 64 private: 65 QString m_command; 66 QStringList m_args; 67 }; 68 69 } 70 71 #endif // SENDMAIL_H 72