00001
00014 #ifndef __EMAISMTPINT_HPP__
00015 #define __EMAISMTPINT_HPP__
00016
00017 #include <EmaiSMTP.hpp>
00018
00024 namespace Emai
00025 {
00030 class SmtpSessionInternal : public Object<EmaiSmtpSession>
00031 {
00032 protected:
00033
00034 typedef Object<EmaiSmtpSession> Parent;
00035
00037 SmtpSessionInternal();
00038
00039 public:
00040
00041 SmtpSessionInternal(
00042 SmtpStatusCallback& inStatusCallback,
00043 EmaiUint32 inTimeout,
00044 EmaiOptions inOptions = EmaiNullOptions);
00045 SmtpSessionInternal(
00046 EmaiSmtpStatusCallback inStatusCallback,
00047 void* inUserData,
00048 EmaiUint32 inTimeout,
00049 EmaiOptions inOptions = EmaiNullOptions);
00050
00051 SmtpSessionInternal(
00052 const SmtpSession& inCopy);
00053 SmtpSessionInternal(
00054 EmaiSmtpSession inSession,
00055 bool inAddRef);
00056
00057 ~SmtpSessionInternal();
00058
00070 void Connect(
00071 EmaiConstUniCharPtr inMailServer,
00072 short inPort = EmaiDefaultSmtpPort,
00073 const EmaiProxyInfo* inProxyInfo = NULL,
00074 void* inUserData = NULL,
00075 EmaiConstCharPtr inHostName = NULL,
00076 EmaiConstCharPtr inIPAddress = NULL,
00077 EmaiOptions inOptions = EmaiNullOptions);
00078
00086 void Disconnect(
00087 EmaiOptions inOptions = EmaiNullOptions);
00088
00102 void Authenticate(
00103 EmaiConstUniCharPtr inAccount,
00104 EmaiConstUniCharPtr inPassword,
00105 EmaiOptions inOptions = EmaiSMTPAuthAutomatic);
00106
00115 void SendMessage(
00116 const Message& inMessage,
00117 StringList& outFailedRecipients,
00118 EmaiOptions inOptions = EmaiNullOptions);
00119
00120
00128 void Cancel(
00129 EmaiOptions inOptions = EmaiNullOptions);
00130
00131
00140 void Noop(
00141 EmaiOptions inOptions = EmaiNullOptions);
00142 };
00143
00144
00145
00146
00147 inline
00148 SmtpSessionInternal::SmtpSessionInternal(
00149 SmtpStatusCallback& inStatusCallback,
00150 EmaiUint32 inTimeout,
00151 EmaiOptions inOptions
00152 )
00153 {
00154 CheckErrorCode(EmaiSmtpSessionCreate(&mObject,
00155 &SmtpStatusCallback::StatusCallback, &inStatusCallback,
00156 inTimeout, inOptions));
00157 }
00158
00159 inline
00160 SmtpSessionInternal::SmtpSessionInternal(
00161 EmaiSmtpStatusCallback inStatusCallback,
00162 void* inUserData,
00163 EmaiUint32 inTimeout,
00164 EmaiOptions inOptions
00165 )
00166 {
00167 CheckErrorCode(EmaiSmtpSessionCreate(&mObject,
00168 inStatusCallback, inUserData,
00169 inTimeout, inOptions));
00170 }
00171
00172 inline
00173 SmtpSessionInternal::SmtpSessionInternal(
00174 const SmtpSessionInternal& inCopy
00175 ):
00176 Parent(inCopy)
00177 {
00178 }
00179
00180 inline
00181 SmtpSessionInternal::SmtpSessionInternal(
00182 EmaiSmtpSession inSession,
00183 bool inAddRef
00184 ):
00185 Parent(inSession, inAddRef)
00186 {
00187 }
00188
00189 inline
00190 SmtpSessionInternal::~SmtpSessionInternal()
00191 {
00192 }
00193
00194 inline void
00195 SmtpSessionInternal::Connect(
00196 EmaiConstUniCharPtr inMailServer,
00197 short inPort ,
00198 const EmaiProxyInfo* inProxyInfo ,
00199 void* inUserData,
00200 EmaiConstCharPtr inHostName,
00201 EmaiConstCharPtr inIPAddress,
00202 EmaiOptions inOptions
00203 )
00204 {
00205 CheckErrorCode(EmaiSmtpConnectInternal(mObject,
00206 inMailServer, inPort,
00207 inProxyInfo,
00208 inUserData,
00209 inHostName,
00210 inIPAddress,
00211 inOptions));
00212 }
00213
00214 inline void
00215 SmtpSessionInternal::Disconnect(
00216 EmaiOptions inOptions
00217 )
00218 {
00219 CheckErrorCode(EmaiSmtpDisconnect(mObject, inOptions));
00220 }
00221
00222 inline void
00223 SmtpSessionInternal::Authenticate(
00224 EmaiConstUniCharPtr inAccount,
00225 EmaiConstUniCharPtr inPassword,
00226 EmaiOptions inOptions
00227 )
00228 {
00229 CheckErrorCode(EmaiSmtpAuthenticate(mObject, inAccount,
00230 inPassword, inOptions));
00231 }
00232
00233 inline void
00234 SmtpSessionInternal::SendMessage(
00235 const Message& inMessage,
00236 StringList& outFailedRecipients,
00237 EmaiOptions inOptions
00238 )
00239 {
00240 EmaiStringList stringList = NULL;
00241 CheckErrorCode(EmaiSmtpSendMessage(mObject, inMessage, &stringList, inOptions));
00242 if (stringList != NULL)
00243 outFailedRecipients = StringList(stringList, true);
00244 }
00245
00246 inline void
00247 SmtpSessionInternal::Cancel(
00248 EmaiOptions inOptions
00249 )
00250 {
00251 CheckErrorCode(EmaiSmtpCancel(mObject, inOptions));
00252 }
00253
00254 inline void
00255 SmtpSessionInternal::Noop(
00256 EmaiOptions inOptions
00257 )
00258 {
00259 CheckErrorCode(EmaiSmtpNoop(mObject, inOptions));
00260 }
00261
00262
00263 }
00264
00265
00266 #endif