smtp.h
00001 
00002 
00003 #ifndef SMTP_H
00004 #define SMTP_H
00005 
00006 #include <qobject.h>
00007 #include <qtimer.h>
00008 #include <ksock.h>
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 #define DEFAULT_SMTP_PORT 25
00035 #define DEFAULT_SMTP_SERVER localhost
00036 #define DEFAULT_SMTP_TIMEOUT 60
00037 
00038 #define SMTP_READ_BUFFER_SIZE 256
00039 
00040 class SMTP:public QObject
00041 {
00042     Q_OBJECT
00043 public:
00044     SMTP(char *serverhost = 0, unsigned short int port = 0, int timeout = DEFAULT_SMTP_TIMEOUT);
00045     ~SMTP();
00046 
00047     void setServerHost(const QString& serverhost);
00048     void setPort(unsigned short int port);
00049     void setTimeOut(int timeout);
00050 
00051     bool isConnected(){return connected;};
00052     bool isFinished(){return finished;};
00053     QString getLastLine(){return lastLine;};
00054 
00055     void setSenderAddress(const QString& sender);
00056     void setRecipientAddress(const QString& recipient);
00057     void setMessageSubject(const QString& subject);
00058     void setMessageBody(const QString& message);
00059     void setMessageHeader(const QString &header);
00060 
00061     typedef enum {
00062         NONE = 0,             
00063         GREET = 220,          
00064         GOODBYE = 221,        
00065         SUCCESSFUL = 250,     
00066         READYDATA = 354,      
00067         ERROR = 501,          
00068         UNKNOWN = 550        
00069     }SMTPServerStatus;
00070 
00071     typedef enum {
00072         INIT = 50,            
00073         IN = 100,             
00074         READY = 150,          
00075         SENTFROM = 200,       
00076         SENTTO = 250,         
00077         DATA = 300,           
00078         FINISHED = 350,       
00079         QUIT = 400,           
00080         OUT = 450,            
00081         CERROR = 500           
00082     }SMTPClientStatus;
00083 
00084     typedef enum {
00085         NOERROR = 0,
00086         CONNECTERROR = 10,
00087         NOTCONNECTED = 11,
00088         CONNECTTIMEOUT = 15,
00089         INTERACTTIMEOUT = 16,
00090         UNKNOWNRESPONSE = 20,
00091         UNKNOWNUSER = 30,
00092         COMMAND = 40
00093     }SMTPError;
00094 
00095 protected:
00096     void processLine(QString *line);
00097 
00098 public slots:
00099     void openConnection();
00100     void sendMessage();
00101     void closeConnection();
00102 
00103     void connectTimerTick();
00104     void connectTimedOut();
00105     void interactTimedOut();
00106 
00107     void socketRead(KSocket *);
00108     void socketClose(KSocket *);
00109 
00110 signals:
00111     void connectionClosed();
00112     void messageSent();
00113     void error(int);
00114 
00115 private:
00116     QString serverHost;
00117     unsigned short int hostPort;
00118     int timeOut;
00119 
00120     bool connected;
00121     bool finished;
00122 
00123     QString senderAddress;
00124     QString recipientAddress;
00125     QString messageSubject;
00126     QString messageBody, messageHeader;
00127 
00128     SMTPClientStatus state;
00129     SMTPClientStatus lastState;
00130     SMTPServerStatus serverState;
00131 
00132     QString domainName;
00133 
00134     KSocket *sock;
00135     QTimer connectTimer;
00136     QTimer timeOutTimer;
00137     QTimer interactTimer;
00138 
00139     char readBuffer[SMTP_READ_BUFFER_SIZE];
00140     QString lineBuffer;
00141     QString lastLine;
00142     QString writeString;
00143 };
00144 #endif
 
This file is part of the documentation for kio Library Version 3.2.0.