00001
00014 #ifndef __EMAISMTP_H__
00015 #define __EMAISMTP_H__
00016
00017 #include <EmaiTypes.h>
00018 #include <EmaiErrors.h>
00019 #include <EmaiMessage.h>
00020 #include <EmaiProxy.h>
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00026 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00027 typedef struct EmaiOpaqueSmtpSession* EmaiSmtpSession;
00028 #endif
00029
00030
00031
00032
00033
00034
00035
00042 enum EmaiEnumSmtpSelector
00043 {
00044 EmaiSmtpSelectorNormal = 0,
00045 EmaiSmtpSelectorSending,
00046 EmaiSmtpSelectorServerError,
00047 };
00048
00054 enum EmaiEnumSmtpOperationCode
00055 {
00056 EmaiSmtpConnectingToServer = 0,
00057 EmaiSmtpConnectedToServer,
00058 EmaiSmtpAuthenticating,
00059 EmaiSmtpAuthenticated,
00060 EmaiSmtpIntroducingSender,
00061 EmaiSmtpSenderIntroduced,
00062 EmaiSmtpSendingRecipients,
00063 EmaiSmtpRecipientsSent,
00064 EmaiSmtpSendingMessageData,
00065 EmaiSmtpMessageDataSent,
00066 EmaiSmtpSendingNOOP,
00067 EmaiSmtpNOOPSent,
00068 EmaiSmtpClosingConnection,
00069 EmaiSmtpConnectionClosed
00070 };
00071
00077 typedef struct
00078 {
00081 EmaiUint32 version;
00082
00084 EmaiUint32 selector;
00085 union
00086 {
00088 struct
00089 {
00090 EmaiUint32 operationCode;
00091 } normal;
00092
00094 struct
00095 {
00096 EmaiUint32 sentSize;
00097 EmaiUint32 totalSize;
00098 } sending;
00099
00101 struct
00102 {
00103 EmaiConstCharPtr serverReply;
00104 EmaiUint32 replyCode;
00105 } serverError;
00106 } data;
00107 } EmaiSmtpCallbackData;
00108
00109
00110
00111
00112
00113 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00114 typedef EMAICALLBACKAPI(EmaiError, EmaiSmtpStatusCallback)(
00115 EmaiSmtpSession inSession,
00116 const EmaiSmtpCallbackData* inData,
00117 void* inUserData);
00118 #endif
00119
00126 enum EmaiEnumSmtpSSL
00127 {
00128 EmaiSmtpUseSSLOption = 0x01,
00129
00130 };
00131
00144 EMAIAPI(EmaiError)
00145 EmaiSmtpSessionCreate(
00146 EmaiSmtpSession* outSession,
00147 EmaiSmtpStatusCallback inStatusCallback,
00148 void* inUserData,
00149 EmaiUint32 inTimeout,
00150 EmaiOptions inOptions);
00151
00152
00159 enum EmaiEnumSmtpPorts
00160 {
00161 EmaiDefaultSmtpPort = 25,
00162 EmaiDefaultSmtpSSLPort = 465
00163 };
00164
00179 EMAIAPI(EmaiError)
00180 EmaiSmtpConnect(
00181 EmaiSmtpSession inSession,
00182 EmaiConstUniCharPtr inMailServer,
00183 short inPort,
00184 EmaiOptions inOptions);
00185
00202 EMAIAPI(EmaiError)
00203 EmaiSmtpConnectEx(
00204 EmaiSmtpSession inSession,
00205 EmaiConstUniCharPtr inMailServer,
00206 short inPort,
00207 const EmaiProxyInfo* inProxyInfo,
00208 void* inUserData,
00209 EmaiOptions inOptions);
00210
00221 EMAIAPI(EmaiError)
00222 EmaiSmtpDisconnect(
00223 EmaiSmtpSession inSession,
00224 EmaiOptions inOptions);
00225
00233 enum EmaiEnumSmtpAuthSelector
00234 {
00236 EmaiSMTPAuthAutomatic,
00237
00239 EmaiSMTPAuthLogin,
00240
00242 EmaiSMTPAuthPlain,
00243
00245 EmaiSMTPAuthCramMD5,
00246
00248 EmaiSMTPAuthNTLM
00249 };
00250
00267 EMAIAPI(EmaiError)
00268 EmaiSmtpAuthenticate(
00269 EmaiSmtpSession inSession,
00270 EmaiConstUniCharPtr inAccount,
00271 EmaiConstUniCharPtr inPassword,
00272 EmaiOptions inOptions);
00273
00285 EMAIAPI(EmaiError)
00286 EmaiSmtpSendMessage(
00287 EmaiSmtpSession inSession,
00288 EmaiMessage inMessage,
00289 EmaiOptions inOptions);
00290
00303 EMAIAPI(EmaiError)
00304 EmaiSmtpSendMessageEx(
00305 EmaiSmtpSession inSession,
00306 EmaiMessage inMessage,
00307 EmaiStringList* outFailedRecipients,
00308 EmaiOptions inOptions);
00309
00320 EMAIAPI(EmaiError)
00321 EmaiSmtpCancel(
00322 EmaiSmtpSession inSession,
00323 EmaiOptions inOptions);
00324
00334 EMAIAPI(EmaiError)
00335 EmaiSmtpNoop(
00336 EmaiSmtpSession inSession,
00337 EmaiOptions inOptions);
00338
00353 EMAIAPI(EmaiError)
00354 EmaiSmtpSendCommand(
00355 EmaiSmtpSession inSession,
00356 const char* inCommand,
00357 EmaiUint32 inExpectedReplyCode,
00358 EmaiOptions inOptions);
00359
00374 EMAIAPI(EmaiError)
00375 EmaiSmtpGetLastServerResponse(
00376 EmaiSmtpSession inSession,
00377 char* outResponse,
00378 EmaiUint32* ioResponseSize,
00379 EmaiUint32* outReplyCode,
00380 EmaiOptions inOptions);
00381
00382 #ifdef __cplusplus
00383 }
00384 #endif
00385
00386
00387 #endif