SmtpClient-for-Qt/src/smtpclient.h

157 lines
2.8 KiB
C
Raw Normal View History

2011-09-02 12:20:33 +00:00
/*
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 LICENCE file for more details.
*/
2011-08-30 18:59:16 +00:00
#ifndef SMTPCLIENT_H
#define SMTPCLIENT_H
#include <QObject>
#include <QtNetwork/QSslSocket>
#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 */
2011-08-31 17:06:24 +00:00
SmtpClient(const QString & host = "locahost", int port = 25, ConnectionType ct = TcpConnection);
2011-08-30 18:59:16 +00:00
~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