00001
00014 #ifndef __EMAIPOP3_H__
00015 #define __EMAIPOP3_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 EmaiOpaquePop3Session* EmaiPop3Session;
00028 typedef struct EmaiOpaquePop3MessageInfoList* EmaiPop3MessageInfoList;
00029 #endif
00030
00031
00032
00033
00034
00035
00036
00043 enum EmaiEnumPop3Selector
00044 {
00045 EmaiPop3SelectorNormal = 0,
00046 EmaiPop3SelectorReceiving,
00047 EmaiPop3SelectorServerError
00048 };
00049
00055 enum EmaiEnumPop3OperationCode
00056 {
00057 EmaiPop3ConnectingToServer = 0,
00058 EmaiPop3ConnectedToServer,
00059 EmaiPop3Authenticating,
00060 EmaiPop3Authenticated,
00061 EmaiPop3GettingMessageList,
00062 EmaiPop3GotMessageList,
00063 EmaiPop3GettingMessageUIDLs,
00064 EmaiPop3GotMessageUIDLs,
00065 EmaiPop3RetrievingMessage,
00066 EmaiPop3MessageRetrieved,
00067 EmaiPop3DeletingMessage,
00068 EmaiPop3MessageDeleted,
00069 EmaiPop3SendingNOOP,
00070 EmaiPop3NOOPSent,
00071 EmaiPop3ClosingConnection,
00072 EmaiPop3ConnectionClosed
00073 };
00074
00080 enum EmaiEnumPop3ReplyCode
00081 {
00082 EmaiPop3NotSupported = 0,
00083 EmaiPop3NoCode,
00084 EmaiPop3Unknown,
00085 EmaiPop3LoginDelay,
00086 EmaiPop3InUse,
00088 EmaiPop3System,
00089 EmaiPop3Auth
00091 };
00092
00096 typedef struct
00097 {
00100 EmaiUint32 version;
00101
00102 EmaiUint32 selector;
00103 union
00104 {
00106 struct
00107 {
00108 EmaiUint32 operationCode;
00109 } normal;
00110
00112 struct
00113 {
00114 EmaiUint32 receivedSize;
00115 EmaiUint32 totalSize;
00116 } receiving;
00117
00119 struct
00120 {
00121 EmaiConstCharPtr serverReply;
00122 EmaiUint32 replyCode;
00123 } serverError;
00124 } data;
00125 } EmaiPop3CallbackData;
00126
00127
00128
00129
00130 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00131 typedef EMAICALLBACKAPI(EmaiError, EmaiPop3StatusCallback)(
00132 EmaiPop3Session inSession,
00133 const EmaiPop3CallbackData* inData,
00134 void* inUserData);
00135 #endif
00136
00137
00144 enum EmaiEnumPop3SSL
00145 {
00146
00147 EmaiPop3UseSSLOption = 0x01,
00148
00149 };
00150
00164 EMAIAPI(EmaiError)
00165 EmaiPop3SessionCreate(
00166 EmaiPop3Session* outSession,
00167 EmaiPop3StatusCallback inStatusCallback,
00168 void* inUserData,
00169 EmaiUint32 inTimeout,
00170 EmaiOptions inOptions);
00171
00172
00179 enum EmaiEnumPop3Ports
00180 {
00181 EmaiDefaultPop3Port = 110,
00182 EmaiDefaultPop3SSLPort = 995
00183 };
00184
00200 EMAIAPI(EmaiError)
00201 EmaiPop3Connect(
00202 EmaiPop3Session inSession,
00203 EmaiConstUniCharPtr inMailServer,
00204 short inPort,
00205 EmaiOptions inOptions);
00206
00224 EMAIAPI(EmaiError)
00225 EmaiPop3ConnectEx(
00226 EmaiPop3Session inSession,
00227 EmaiConstUniCharPtr inMailServer,
00228 short inPort,
00229 const EmaiProxyInfo* inProxyInfo,
00230 void* inUserData,
00231 EmaiOptions inOptions);
00232
00243 EMAIAPI(EmaiError)
00244 EmaiPop3Disconnect(
00245 EmaiPop3Session inSession,
00246 EmaiOptions inOptions);
00247
00254 enum EmaiEnumPop3AuthSelector
00255 {
00257 EmaiPOP3AuthAutomatic,
00258
00260 EmaiPOP3AuthLoginCommand,
00261
00263 EmaiPOP3AuthApop,
00264
00266 EmaiPOP3AuthLogin,
00267
00269 EmaiPOP3AuthPlain,
00270
00272 EmaiPOP3AuthCramMD5,
00273
00275 EmaiPOP3AuthNTLM
00276 };
00277
00294 EMAIAPI(EmaiError)
00295 EmaiPop3Authenticate(
00296 EmaiPop3Session inSession,
00297 EmaiConstUniCharPtr inAccount,
00298 EmaiConstUniCharPtr inPassword,
00299 EmaiOptions inOptions);
00300
00324 EMAIAPI(EmaiError)
00325 EmaiPop3RetrieveMessageList(
00326 EmaiPop3Session inSession,
00327 EmaiPop3MessageInfoList inMessageInfoList,
00328 EmaiOptions inOptions);
00329
00336 enum EmaiEnumPop3RetrieveAttribute
00337 {
00339 EmaiRetrieveRFC822Header = 1
00340 };
00341
00357 EMAIAPI(EmaiError)
00358 EmaiPop3RetrieveMessage(
00359 EmaiPop3Session inSession,
00360 EmaiMessage* outMessage,
00361 EmaiUint32 inMessageNumber,
00362 EmaiOptions inOptions);
00363
00375 EMAIAPI(EmaiError)
00376 EmaiPop3DeleteMessage(
00377 EmaiPop3Session inSession,
00378 EmaiUint32 inMessageNumber,
00379 EmaiOptions inOptions);
00380
00391 EMAIAPI(EmaiError)
00392 EmaiPop3Reset(
00393 EmaiPop3Session inSession,
00394 EmaiOptions inOptions);
00395
00404 EMAIAPI(EmaiError)
00405 EmaiPop3Cancel(
00406 EmaiPop3Session inSession,
00407 EmaiOptions inOptions);
00408
00420 EMAIAPI(EmaiError)
00421 EmaiPop3Noop(
00422 EmaiPop3Session inSession,
00423 EmaiOptions inOptions);
00424
00425
00426
00427
00428
00429
00430
00431
00438 enum EmaiEnumPop3CreateMessageInfoFlags
00439 {
00440 EmaiCreateFileIfNotExists = 1
00441 };
00442
00454 EMAIAPI(EmaiError)
00455 EmaiPop3MessageInfoListCreateFromFile(
00456 EmaiPop3MessageInfoList* outMessageInfoList,
00457 EmaiConstUniCharPtr inFullFilePath,
00458 EmaiOptions inOptions);
00459
00470 EMAIAPI(EmaiError)
00471 EmaiPop3MessageInfoListCreateFromData(
00472 EmaiPop3MessageInfoList* outMessageInfoList,
00473 const void* inMessageListData,
00474 EmaiUint32 inMessageListDataSize,
00475 EmaiOptions inOptions);
00476
00487 EMAIAPI(EmaiError)
00488 EmaiPop3MessageInfoListGetHistoryData(
00489 EmaiPop3MessageInfoList inMessageInfoList,
00490 const void** outData,
00491 EmaiUint32& outDataSize,
00492 EmaiOptions inOptions);
00493
00504 EMAIAPI(EmaiError)
00505 EmaiPop3MessageInfoListResetHistory(
00506 EmaiPop3MessageInfoList inMessageInfoList,
00507 EmaiConstUniCharPtr inAccount,
00508 EmaiConstUniCharPtr inServer,
00509 EmaiOptions inOptions);
00510
00516 typedef struct
00517 {
00518 EmaiConstCharPtr messageUID;
00520 EmaiUint32 messageNumber;
00522 EmaiUint32 messageSize;
00527
00528
00543
00547
00549
00551
00567
00583
00606
00620
00624
00626
00641