kmail Library API Documentation

kmsender_p.h

00001 /* KMail Mail Sender
00002  *
00003  * Author: Stefan Taferner <taferner@alpin.or.at>
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 /* __KMAIL_SENDER_P_H__ */
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jan 31 15:55:07 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003