/* Copyright (c) 2011 - Tőkés Attila This file is part of SmtpClient for Qt. SmtpClient for Qt is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. SmtpClient for Qt is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. See the LICENSE file for more details. */ #ifndef SMTPCLIENT_H #define SMTPCLIENT_H #include #include #include "mimemessage.h" class SmtpClient : public QObject { Q_OBJECT public: /* [0] Enumerations */ enum AuthMethod { AuthPlain, AuthLogin }; enum SmtpError { ConnectionTimeoutError, ResponseTimeoutError, AuthentificationFailedError, ServerError, // 4xx smtp error ClientError // 5xx smtp error }; enum ConnectionType { TcpConnection, SslConnection }; /* [0] --- */ /* [1] Constructors and Destructors */ SmtpClient(const QString & host = "locahost", int port = 25, ConnectionType ct = TcpConnection); ~SmtpClient(); /* [1] --- */ /* [2] Getters and Setters */ const QString& getHost() const; void setHost(QString &host); int getPort() const; void setPort(int port); ConnectionType getConnectionType() const; void setConnectionType(ConnectionType ct); const QString & getUser() const; void setUser(const QString &host); const QString & getPassword() const; void setPassword(const QString &password); SmtpClient::AuthMethod getAuthMethod() const; void setAuthMethod(AuthMethod method); /* [2] --- */ /* [3] Public methods */ bool connectToHost(); bool login(); bool login(const QString &user, const QString &password, AuthMethod method = AuthLogin); bool sendMail(MimeMessage& email); void quit(); /* [3] --- */ protected: /* [4] Protected members */ QTcpSocket *socket; QString host; int port; bool useSsl; QString user; QString password; AuthMethod authMethod; int connectionTimeout; int responseTimeout; QString responseText; int responseCode; class ResponseTimeoutException {}; /* [4] --- */ /* [5] Protected methods */ void waitForResponse() throw (ResponseTimeoutException); void sendMessage(const QString &text); /* [5] --- */ protected slots: /* [6] Protected slots */ void socketStateChanged(QAbstractSocket::SocketState state); void socketError(QAbstractSocket::SocketError error); void socketReadyRead(); /* [6] --- */ signals: /* [7] Signals */ void smtpError(SmtpError e); /* [7] --- */ }; #endif // SMTPCLIENT_H