6#include <QtNetwork/QSslSocket>
9#include <ilog/TLoggerCompWrap.h>
10#include <iprm/ITextParam.h>
13#include <imtmail/ISmtpClient.h>
20class CSmtpClientComp:
public QObject,
public ilog::CLoggerComponentBase,
virtual public ISmtpClient
24 typedef ilog::CLoggerComponentBase BaseClass;
26 I_BEGIN_COMPONENT(CSmtpClientComp);
27 I_REGISTER_INTERFACE(ISmtpClient);
28 I_ASSIGN(m_hostNameAttrPtr,
"Host",
"The property holds connection's host name.",
false,
"smtp.gmail.com");
29 I_ASSIGN(m_hostParamCompPtr,
"HostParam",
"The property holds connection's host name parameter",
false,
"");
30 I_ASSIGN(m_portAttrPtr,
"Port",
"The property holds connection's port number",
false, 465);
31 I_ASSIGN(m_portParamCompPtr,
"PortParam",
"The property holds connection's port number parameter",
false,
"");
32 I_ASSIGN(m_timeoutAttrPtr,
"Timeout",
"Timeout (in msecs)",
false, 5000);
33 I_ASSIGN(m_userAttrPtr,
"User",
"User",
false,
"");
34 I_ASSIGN(m_userParamCompPtr,
"UserParam",
"User parameter",
false,
"");
35 I_ASSIGN(m_passwordAttrPtr,
"Password",
"Password",
false,
"");
36 I_ASSIGN(m_passwordParamCompPtr,
"PasswordParam",
"Password parameter",
false,
"");
45 RC_SERVICE_READY = 220,
47 RC_AUTHENTIFICATION_REQUEST = 334,
48 RC_AUTHENTIFICATION_SUCCESSFUL = 235,
49 RC_START_MAIL_INPUT = 354,
50 RC_SERVICE_CLOSING = 221
69 ResponseCode ExtractResponseCode(
const QByteArray& response);
70 void SendCommand(
const QString& command);
74 virtual QString GetHost()
const override;
75 virtual int GetPort()
const override;
76 virtual bool SendEmail(
const ISmtpMessage& message)
const override;
79 void OnStateChanged(QAbstractSocket::SocketState socketState);
80 void OnErrorReceived(QAbstractSocket::SocketError socketError);
81 void OnSslErrors(
const QList<QSslError>& sslErrors);
82 void OnDisconnected();
88 I_ATTR(QByteArray, m_userAttrPtr);
89 I_REF(iprm::ITextParam, m_userParamCompPtr);
90 I_ATTR(QByteArray, m_passwordAttrPtr);
91 I_REF(iprm::ITextParam, m_passwordParamCompPtr);
92 I_ATTR(QString, m_hostNameAttrPtr);
93 I_REF(iprm::ITextParam, m_hostParamCompPtr);
94 I_ATTR(
int, m_portAttrPtr);
95 I_REF(iprm::ITextParam, m_portParamCompPtr);
96 I_ATTR(
int, m_timeoutAttrPtr);
99 mutable std::unique_ptr<QSslSocket> m_socketPtr;
100 mutable istd::TUniqueInterfacePtr<ISmtpMessage> m_smtpMessagePtr;
101 std::unique_ptr<QTextStream> m_textStreamPtr;
102 mutable int m_currentMailSendState;
103 mutable QString m_message;