kmsender_p.h
00001
00002
00003
00004
00005 #ifndef __KMAIL_SENDER_P_H__
00006 #define __KMAIL_SENDER_P_H__
00007 #include "kmsender.h"
00008
00009 #include <qcstring.h>
00010 #include <qstring.h>
00011 #include <qstringlist.h>
00012 #include <qobject.h>
00013 #include <kio/global.h>
00014 #include <kdeversion.h>
00015
00016 class KMMessage;
00017 class KMFolder;
00018 class KMFolderMgr;
00019 class KConfig;
00020 class KProcess;
00021 class KMSendProc;
00022 class QStrList;
00023 class KMTransportInfo;
00024 class KMPrecommand;
00025
00026 namespace KIO {
00027 class Job;
00028 class TransferJob;
00029 class Slave;
00030 }
00031
00032 namespace KMime {
00033 namespace Types {
00034 class AddrSpec;
00035 typedef QValueList<AddrSpec> AddrSpecList;
00036 }
00037 }
00038
00039
00040 class KMSendProc: public QObject
00041 {
00042 Q_OBJECT
00043
00044 public:
00045 KMSendProc(KMSender*);
00046 virtual ~KMSendProc() {}
00047
00049 virtual void start(void);
00050
00052 virtual void preSendInit(void);
00053
00055 virtual bool send(KMMessage* msg) = 0;
00056
00058 virtual bool finish(bool destructive);
00059
00061 virtual void abort() = 0;
00062
00065 bool sendOk(void) const { return mSendOk; }
00066
00068 bool sending(void) const { return mSending; }
00069
00071 QString message(void) const { return mMsg; }
00072
00073 signals:
00075 void idle();
00076
00078 void started(bool);
00079
00080
00081 protected:
00085 virtual void failed(const QString &msg);
00086
00088 virtual void statusMsg(const QString&);
00089
00094 virtual bool addRecipients(const KMime::Types::AddrSpecList & aRecpList);
00095
00101 virtual bool addOneRecipient(const QString& aRecipient) = 0;
00102
00103 protected:
00104 bool mSendOk, mSending;
00105 QString mMsg;
00106 KMSender* mSender;
00107 };
00108
00109
00110
00111 class KMSendSendmail: public KMSendProc
00112 {
00113 Q_OBJECT
00114 public:
00115 KMSendSendmail(KMSender*);
00116 virtual ~KMSendSendmail();
00117 virtual void start(void);
00118 virtual bool send(KMMessage* msg);
00119 virtual bool finish(bool destructive);
00120 virtual void abort();
00121
00122 protected slots:
00123 void receivedStderr(KProcess*,char*,int);
00124 void wroteStdin(KProcess*);
00125 void sendmailExited(KProcess*);
00126
00127 protected:
00128 virtual bool addOneRecipient(const QString& aRecipient);
00129
00130 QCString mMsgStr;
00131 char* mMsgPos;
00132 int mMsgRest;
00133 KProcess* mMailerProc;
00134 };
00135
00136
00137 class KMSendSMTP : public KMSendProc
00138 {
00139 Q_OBJECT
00140 public:
00141 KMSendSMTP(KMSender *sender);
00142 ~KMSendSMTP();
00143
00144 virtual bool send(KMMessage *);
00145 virtual void abort();
00146 virtual bool finish(bool);
00147
00148 protected:
00149 virtual bool addOneRecipient(const QString& aRecipient);
00150
00151 private slots:
00152 void dataReq(KIO::Job *, QByteArray &);
00153 void result(KIO::Job *);
00154 void slaveError(KIO::Slave *, int, const QString &);
00155
00156 private:
00157 QString mQuery;
00158 QString mQueryField;
00159 QCString mMessage;
00160 uint mMessageLength;
00161 uint mMessageOffset;
00162
00163 bool mInProcess;
00164
00165 KIO::TransferJob *mJob;
00166 KIO::Slave *mSlave;
00167 };
00168
00169 #endif
This file is part of the documentation for kmail Library Version 3.3.2.