kmsender.h
00001
00002
00003
00004
00005 #ifndef kmsender_h
00006 #define kmsender_h
00007 #include <qcstring.h>
00008 #include <qstring.h>
00009 #include <qstringlist.h>
00010 #include <qobject.h>
00011 #include <kio/global.h>
00012 #include <kdeversion.h>
00013
00014 class KMMessage;
00015 class KMFolder;
00016 class KMFolderMgr;
00017 class KConfig;
00018 class KProcess;
00019 class KMSendProc;
00020 class QStrList;
00021 class KMTransportInfo;
00022 class KMPrecommand;
00023
00024 namespace KIO {
00025 class Job;
00026 class TransferJob;
00027 class Slave;
00028 }
00029
00030 namespace KMime {
00031 namespace Types {
00032 class AddrSpec;
00033 typedef QValueList<AddrSpec> AddrSpecList;
00034 }
00035 }
00036
00037 namespace KPIM {
00038 class ProgressItem;
00039 }
00040
00041 class KMSender: public QObject
00042 {
00043 Q_OBJECT
00044 friend class KMSendProc;
00045
00046 public:
00047 KMSender();
00048 virtual ~KMSender();
00049
00057 virtual bool send(KMMessage* msg, short sendNow=-1);
00058
00060 virtual bool sendQueued();
00061
00063 bool sending(void) const { return mSendInProgress; }
00064
00067 bool sendImmediate(void) const { return mSendImmediate; }
00068 virtual void setSendImmediate(bool);
00069
00072 bool sendQuotedPrintable(void) const { return mSendQuotedPrintable; }
00073 virtual void setSendQuotedPrintable(bool);
00074
00076 KMTransportInfo * transportInfo() { return mTransportInfo; }
00077
00079 virtual void readConfig(void);
00080
00082 virtual void writeConfig(bool withSync=TRUE);
00083
00085 void setStatusMsg(const QString&);
00086
00088 void setStatusByLink(const KMMessage *aMsg);
00089
00091 void emitProgressInfo( int currentFileProgress );
00092
00093 protected slots:
00095 virtual void slotPrecommandFinished(bool);
00096
00097 virtual void slotIdle();
00098
00100 virtual void slotAbortSend();
00101
00103 virtual void sendProcStarted(bool success);
00104
00106 void outboxMsgAdded(int idx);
00107
00108 protected:
00110 virtual void doSendMsg();
00111
00113 virtual void doSendMsgAux();
00114
00116 virtual void cleanup(void);
00117
00121 virtual bool settingsOk(void) const;
00122
00125 virtual KMSendProc* createSendProcFromString(QString transport);
00126
00127 private:
00128 bool mSendImmediate;
00129 bool mSendQuotedPrintable;
00130 KMTransportInfo *mTransportInfo;
00131 KMPrecommand *mPrecommand;
00132
00133 bool mSentOk, mSendAborted;
00134 QString mErrorMsg;
00135 KMSendProc *mSendProc;
00136 QString mMethodStr;
00137 bool mSendProcStarted;
00138 bool mSendInProgress;
00139 KMFolder *mOutboxFolder;
00140 KMFolder *mSentFolder;
00141 KMMessage * mCurrentMsg;
00142 KPIM::ProgressItem* mProgressItem;
00143 int mSentMessages, mTotalMessages;
00144 int mSentBytes, mTotalBytes;
00145 int mFailedMessages;
00146 };
00147
00148
00149
00150 class KMSendProc: public QObject
00151 {
00152 Q_OBJECT
00153
00154 public:
00155 KMSendProc(KMSender*);
00156 virtual ~KMSendProc() {}
00157
00159 virtual void start(void);
00160
00162 virtual void preSendInit(void);
00163
00165 virtual bool send(KMMessage* msg) = 0;
00166
00168 virtual bool finish(bool destructive);
00169
00171 virtual void abort() = 0;
00172
00175 bool sendOk(void) const { return mSendOk; }
00176
00178 bool sending(void) const { return mSending; }
00179
00181 QString message(void) const { return mMsg; }
00182
00183 signals:
00185 void idle();
00186
00188 void started(bool);
00189
00190
00191 protected:
00195 virtual void failed(const QString &msg);
00196
00198 virtual void statusMsg(const QString&);
00199
00204 virtual bool addRecipients(const KMime::Types::AddrSpecList & aRecpList);
00205
00211 virtual bool addOneRecipient(const QString& aRecipient) = 0;
00212
00213 protected:
00214 bool mSendOk, mSending;
00215 QString mMsg;
00216 KMSender* mSender;
00217 };
00218
00219
00220
00221 class KMSendSendmail: public KMSendProc
00222 {
00223 Q_OBJECT
00224 public:
00225 KMSendSendmail(KMSender*);
00226 virtual ~KMSendSendmail();
00227 virtual void start(void);
00228 virtual bool send(KMMessage* msg);
00229 virtual bool finish(bool destructive);
00230 virtual void abort();
00231
00232 protected slots:
00233 void receivedStderr(KProcess*,char*,int);
00234 void wroteStdin(KProcess*);
00235 void sendmailExited(KProcess*);
00236
00237 protected:
00238 virtual bool addOneRecipient(const QString& aRecipient);
00239
00240 QCString mMsgStr;
00241 char* mMsgPos;
00242 int mMsgRest;
00243 KProcess* mMailerProc;
00244 };
00245
00246
00247 class KMSendSMTP : public KMSendProc
00248 {
00249 Q_OBJECT
00250 public:
00251 KMSendSMTP(KMSender *sender);
00252 ~KMSendSMTP();
00253
00254 virtual bool send(KMMessage *);
00255 virtual void abort();
00256 virtual bool finish(bool);
00257
00258 protected:
00259 virtual bool addOneRecipient(const QString& aRecipient);
00260
00261 private slots:
00262 void dataReq(KIO::Job *, QByteArray &);
00263 void result(KIO::Job *);
00264 void slaveError(KIO::Slave *, int, const QString &);
00265
00266 private:
00267 QString mQuery;
00268 QString mQueryField;
00269 QCString mMessage;
00270 uint mMessageLength;
00271 uint mMessageOffset;
00272
00273 bool mInProcess;
00274
00275 KIO::TransferJob *mJob;
00276 KIO::Slave *mSlave;
00277 };
00278
00279 #endif
This file is part of the documentation for kmail Library Version 3.3.2.