Dacons LLP Mailit for C/C++ Version 1.0.8

EmaiSMTP.h

Go to the documentation of this file.
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 /* DOXYGEN_SHOULD_SKIP_THIS */
00029 
00030 /***************************************************
00031 //
00032 // Functions for communicating with SMTP server
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 // Status callback declaration for SMTP session.
00112 */
00113 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00114 typedef EMAICALLBACKAPI(EmaiError, EmaiSmtpStatusCallback)(
00115         EmaiSmtpSession inSession,
00116         const EmaiSmtpCallbackData* inData,
00117         void* inUserData);
00118 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00119 
00126 enum EmaiEnumSmtpSSL
00127 {
00128     EmaiSmtpUseSSLOption    = 0x01, 
00129                                 /* will connect only to secured SMTP servers.*/
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,                  /*can be NULL*/
00378         EmaiUint32* ioResponseSize,
00379         EmaiUint32* outReplyCode,           /*can be NULL*/
00380         EmaiOptions inOptions);
00381 
00382 #ifdef __cplusplus
00383     }
00384 #endif
00385 
00386 
00387 #endif /*__EMAISMTP_H__*/