00001
00014 #ifndef __EMAIIMAP_H__
00015 #define __EMAIIMAP_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 typedef struct EmaiOpaqueImapSession* EmaiImapSession;
00027
00028
00029
00030
00031
00032 typedef struct EmaiOpaqueImapSequenceSet* EmaiImapSequenceSet;
00033
00034
00035
00036
00037
00038
00039
00040
00041
00050 EMAIAPI(EmaiError)
00051 EmaiImapSequenceSetCreate(
00052 EmaiImapSequenceSet* outSequenceSet,
00053 EmaiOptions inOptions);
00054
00064 EMAIAPI(EmaiError)
00065 EmaiImapSequenceSetAddNumber(
00066 EmaiImapSequenceSet inSequenceSet,
00067 EmaiUint32 inNumber,
00068 EmaiOptions inOptions);
00069
00079 EMAIAPI(EmaiError)
00080 EmaiImapSequenceSetRemoveNumber(
00081 EmaiImapSequenceSet inSequenceSet,
00082 EmaiUint32 inNumber,
00083 EmaiOptions inOptions);
00084
00094 enum
00095 {
00096 EmaiImapMaxSequenceSetNumber = 0
00097 };
00098
00109 EMAIAPI(EmaiError)
00110 EmaiImapSequenceSetAddRange(
00111 EmaiImapSequenceSet inSequenceSet,
00112 EmaiUint32 inMinNumber,
00113 EmaiUint32 inMaxNumber,
00114 EmaiOptions inOptions);
00115
00126 EMAIAPI(EmaiError)
00127 EmaiImapSequenceSetRemoveRange(
00128 EmaiImapSequenceSet inSequenceSet,
00129 EmaiUint32 inMinNumber,
00130 EmaiUint32 inMaxNumber,
00131 EmaiOptions inOptions);
00132
00142 EMAIAPI(EmaiError)
00143 EmaiImapSequenceSetAddSequenceSet(
00144 EmaiImapSequenceSet inSequenceSet,
00145 EmaiImapSequenceSet inSequenceSetToAdd,
00146 EmaiOptions inOptions);
00147
00158 EMAIAPI(EmaiError)
00159 EmaiImapSequenceSetRemoveSequenceSet(
00160 EmaiImapSequenceSet inSequenceSet,
00161 EmaiImapSequenceSet inSequenceSetToRemove,
00162 EmaiOptions inOptions);
00163
00173 EMAIAPI(EmaiError)
00174 EmaiImapSequenceSetGetCount(
00175 EmaiImapSequenceSet inSequenceSet,
00176 EmaiUint32* outCount,
00177 EmaiOptions inOptions);
00178
00194 EMAIAPI(EmaiError)
00195 EmaiImapSequenceSetGetBounds(
00196 EmaiImapSequenceSet inSequenceSet,
00197 EmaiUint32* outFirstNumber,
00198 EmaiUint32* outLastNumber,
00199 EmaiOptions inOptions);
00200
00201
00207 enum EmaiEnumImapSequenceSetGetNextNumberOptions
00208 {
00209 EmaiImapForward = 0,
00210 EmaiImapBackward = 1
00211 };
00212
00259 EMAIAPI(EmaiError)
00260 EmaiImapSequenceSetGetNextNumber(
00261 EmaiImapSequenceSet inSequenceSet,
00262 EmaiUint32 inNumber,
00263 EmaiUint32* outNextNumber,
00264 EmaiOptions inOptions);
00265
00277 EMAIAPI(EmaiError)
00278 EmaiImapSequenceContainsNumber(
00279 EmaiImapSequenceSet inSequenceSet,
00280 EmaiUint32 inNumber,
00281 EmaiOptions inOptions);
00282
00283
00284
00285
00286
00287
00288
00289
00290
00307 typedef struct
00308 {
00311 EmaiUint32 flags;
00312
00315 EmaiStringList customFlags;
00316 } EmaiFlags;
00317
00323 typedef struct
00324 {
00326 EmaiUint32 uidValidity;
00327
00330 EmaiImapSequenceSet sourceSequenceSet;
00331
00333 EmaiImapSequenceSet destSequenceSet;
00334 } EmaiUidPlus;
00335
00336
00349 enum EmaiEnumImapStatusResponseFlags
00350 {
00351 EmaiAnsweredFlag = 0x01,
00354 EmaiFlaggedFlag = 0x02,
00357 EmaiDeletedFlag = 0x04,
00360 EmaiSeenFlag = 0x08,
00363 EmaiDraftFlag = 0x10,
00366 EmaiAllowKeywordsFlag = 0x20,
00372 EmaiRecentFlag = 0x20
00380 };
00381
00390 enum EmaiEnumImapStatusResponseCodes
00391 {
00392
00393 EmaiNoCode,
00394
00395 EmaiXUserDefinedCode,
00397
00398
00399 EmaiAlertCode,
00400 EmaiBadCharsetCode,
00401 EmaiCapabilityCode,
00402 EmaiParseCode,
00403 EmaiPermanentFlagsCode,
00404 EmaiReadOnlyCode,
00405 EmaiReadWriteCode,
00406 EmaiTryCreateCode,
00407 EmaiUIDNextCode,
00408 EmaiUIDValidityCode,
00409 EmaiUnseenCode,
00410 EmaiAppendUIDCode,
00411 EmaiCopyUIDCode
00412 };
00413
00422 typedef struct
00423 {
00425 EmaiUint32 code;
00426
00428 EmaiConstUniCharPtr codeText;
00429
00431 union
00432 {
00433 EmaiConstUniCharPtr text;
00434 EmaiUint32 number;
00435 EmaiUidPlus uidPlus;
00436 EmaiFlags permanentFlags;
00437 EmaiStringList list;
00438 } param;
00439
00440
00441 EmaiConstUniCharPtr text;
00442 } EmaiResponseText;
00443
00444
00451 enum EmaiEnumImapStatusResponseTypes
00452 {
00453 EmaiImapOkResponse,
00454 EmaiImapNoResponse,
00455 EmaiImapBadResponse,
00456 EmaiImapPreauthResponse,
00457 EmaiImapByeResponse,
00459 EmaiTaggedStatusResponse = 0x80000000,
00462 EmaiImapTaggedOkResponse = EmaiTaggedStatusResponse | EmaiImapOkResponse
00464 };
00465
00475 typedef struct
00476 {
00478 EmaiUint32 responseType;
00479
00481 EmaiResponseText responseText;
00482 } EmaiStatusResponse;
00483
00484
00485
00486
00487
00488
00489
00490
00498 typedef struct
00499 {
00500 EmaiStringList capabilities;
00501 } EmaiCapabilityResponse;
00502
00545 enum EmaiEnumImapMailboxAttributes
00546 {
00547 EmaiNoAttributes = 0x0000,
00549
00550 EmaiNoselectAttribute = 0x0001,
00551 EmaiMarkedAttribute = 0x0002,
00552 EmaiUnmarkedAttribute = 0x0003,
00553 EmaiStandardAttibutesMask = 0x0003,
00554
00555 EmaiNoinferiorsAttribute = 0x0010,
00557
00558
00559 EmaiHasChildren = 0x0100,
00560 EmaiHasNoChildren = 0x0200,
00561 EmaiChildrenAttibutesMask = 0x0300
00562 };
00563
00581 typedef struct
00582 {
00584 EmaiUint32 attributes;
00585
00587 EmaiStringList customAttributes;
00588
00590 EmaiChar delimiter;
00591
00593 EmaiConstUniCharPtr mailboxName;
00594 } EmaiListResponse;
00595
00596 typedef EmaiListResponse EmaiLsubResponse;
00597
00603 enum EmaiEnumImapUndefinedStatus
00604 {
00605 EmaiUndefinedStatus = 0xFFFFFFFF
00606 };
00607
00617 typedef struct
00618 {
00619 EmaiConstUniCharPtr mailboxName;
00620
00628 EmaiUint32 messages;
00629
00631 EmaiUint32 recent;
00632
00634 EmaiUint32 uidNext;
00635
00637 EmaiUint32 uidValidity;
00638
00640 EmaiUint32 unseen;
00641 } EmaiMailboxStatusResponse;
00642
00652 typedef struct
00653 {
00655 EmaiImapSequenceSet messages;
00656 } EmaiSearchResponse;
00657
00670 typedef EmaiFlags EmaiFlagsResponse;
00671
00672
00673
00674
00675
00676
00677
00678
00685 typedef struct
00686 {
00689 EmaiUint32 number;
00690 } EmaiNumberResponse;
00691
00705 typedef EmaiNumberResponse EmaiExistsResponse;
00706
00734 typedef EmaiNumberResponse EmaiRecentResponse;
00735
00736
00737
00738
00739
00740
00741
00742
00783 typedef EmaiNumberResponse EmaiExpungeResponse;
00784
00790 enum EmaiEnumImapUndefinedOriginValue
00791 {
00792 EmaiUndefinedOriginValue = 0xFFFFFFFF
00793 };
00794
00810 typedef struct
00811 {
00813 EmaiConstUniCharPtr section;
00814
00816 EmaiUint32 dataOrigin;
00817
00818
00820 EmaiConstCharPtr data;
00821
00823 EmaiUint32 dataLength;
00824 } EmaiBodySectionData;
00825
00834 typedef struct
00835 {
00837 EmaiConstCharPtr data;
00838
00840 EmaiUint32 dataLength;
00841 } EmaiRFC822Data;
00842
00852 typedef struct
00853 {
00854 EmaiConstUniCharPtr date;
00855 EmaiConstUniCharPtr subject;
00856
00857 EmaiContactList from;
00858 EmaiContactList sender;
00859 EmaiContactList replyTo;
00860 EmaiContactList to;
00861 EmaiContactList cc;
00862 EmaiContactList bcc;
00863 EmaiConstUniCharPtr inReplyTo;
00864
00865 EmaiConstUniCharPtr messageID;
00866
00867 } EmaiFetchEnvelopeData;
00868
00869
00875 enum EmaiEnumBodyType
00876 {
00877 EmaiMultipartBody,
00878 EmaiBasicBody,
00879 EmaiMessageBody,
00880 EmaiTextBody
00881 };
00882
00888 typedef struct EmaiBodyStructure
00889 {
00892 EmaiUint32 bodyType;
00893
00896 EmaiContentField contentType;
00897
00899 EmaiContentField contentDisposition;
00900
00902 EmaiStringList languages;
00903
00905 EmaiConstCharPtr locationURI;
00906
00909 EmaiConstCharPtr contentMD5;
00910
00913 EmaiUint32 size;
00914 EmaiConstUniCharPtr contentID;
00915 EmaiConstUniCharPtr contentDescription;
00916 EmaiConstUniCharPtr contentTransferEncoding;
00917
00918 union
00919 {
00920 struct
00921 {
00922 EmaiUint32 subPartCount;
00924 const struct EmaiBodyStructure**
00925 subParts;
00926 } multipart;
00927
00928 struct
00929 {
00930
00931 } basic;
00932
00933 struct
00934 {
00935 EmaiUint32 lines;
00936 } text;
00937
00938 struct
00939 {
00940 EmaiFetchEnvelopeData envelope;
00941 EmaiUint32 lines;
00942 const struct EmaiBodyStructure*
00943 body;
00944 } message;
00945
00946 } data;
00947
00948 } EmaiBodyStructure;
00949
00956 typedef struct
00957 {
00959 EmaiUint32 messageNumber;
00960
00962 EmaiFlags flags;
00963
00965 EmaiFetchEnvelopeData envelope;
00966
00968 EmaiConstUniCharPtr internalDate;
00969
00971 EmaiUint32 uid;
00972
00974 EmaiUint32 rfc822Size;
00975
00977 EmaiRFC822Data rfc822;
00979 EmaiRFC822Data rfc822Header;
00981 EmaiRFC822Data rfc822Text;
00982
00984 struct
00985 {
00986 EmaiUint32 count;
00988 const EmaiBodySectionData* data;
00989 } sections;
00990
00992 const EmaiBodyStructure* body;
00993
00995 const EmaiBodyStructure* bodyStructure;
00996
00997 } EmaiFetchResponse;
00998
00999
01000
01001
01002
01003
01004
01005
01011 typedef struct
01012 {
01014 EmaiResponseText responseText;
01015 } EmaiContinueRequestResponse;
01016
01017
01018
01019
01020
01021
01022
01031 enum EmaiEnumImapServerResponses
01032 {
01033 EmaiUnrecognizedResponseType,
01034 EmaiStatusResponseType,
01035 EmaiCapabilityResponseType,
01036 EmaiListResponseType,
01037 EmaiLsubResponseType,
01038 EmaiMailboxStatusResponseType,
01039 EmaiSearchResponseType,
01040 EmaiFlagsResponseType,
01041 EmaiExistsResponseType,
01042 EmaiRecentResponseType,
01043 EmaiExpungeResponseType,
01044 EmaiFetchResponseType,
01045 EmaiContinueRequestResponseType
01046 };
01047
01054 typedef struct
01055 {
01058 EmaiUint32 version;
01059
01061 EmaiConstCharPtr response;
01063 EmaiUint32 responseSize;
01065 EmaiUint32 responseType;
01066
01068 union
01069 {
01070 EmaiStatusResponse status;
01071 EmaiCapabilityResponse capability;
01072 EmaiListResponse list;
01073 EmaiLsubResponse lsub;
01074 EmaiMailboxStatusResponse mailboxStatus;
01075 EmaiSearchResponse search;
01076 EmaiFlagsResponse flags;
01077 EmaiExistsResponse exists;
01078 EmaiRecentResponse recent;
01079 EmaiExpungeResponse expunge;
01080 EmaiFetchResponse fetch;
01081 EmaiContinueRequestResponse continueRequest;
01082 } data;
01083 } EmaiResponse;
01084
01085
01086
01087
01088
01089
01090
01091
01097 enum EmaiEnumImapCallbackData
01098 {
01099 EmaiImapSelectorNormal = 0,
01100 EmaiImapSelectorSending,
01101 EmaiImapSelectorReceiving,
01102 EmaiImapSelectorServerError,
01103 };
01104
01110 enum EmaiEnumImapOperationCode
01111 {
01112 EmaiImapConnectingToServer = 0,
01113 EmaiImapConnectedToServer,
01114 EmaiImapAuthenticating,
01115 EmaiImapAuthenticated,
01116 EmaiImapCreatingMailbox,
01117 EmaiImapMailboxCreated,
01118 EmaiImapDeletingMailbox,
01119 EmaiImapMailboxDeleted,
01120 EmaiImapSubsribingMailbox,
01121 EmaiImapMailboxSubscribed,
01122 EmaiImapUnSubsribingMailbox,
01123 EmaiImapMailboxUnSubscribed,
01124 EmaiImapRenamingMailbox,
01125 EmaiImapMailboxRenamed,
01126 EmaiImapRetrievingMailboxList,
01127 EmaiImapMailboxListRetrieved,
01128 EmaiImapExaminingMailbox,
01129 EmaiImapMailboxExamined,
01130 EmaiImapRetrievingMailboxStatus,
01131 EmaiImapMailboxStatusRetrieved,
01132 EmaiImapSelectingMailbox,
01133 EmaiImapMailboxSelected,
01134 EmaiImapClosingMailbox,
01135 EmaiImapMailboxClosed,
01136 EmaiImapChecking,
01137 EmaiImapChecked,
01138 EmaiImapAppendingMessage,
01139 EmaiImapMessageAppended,
01140 EmaiImapSearchingMessages,
01141 EmaiImapMessageSearchFinished,
01142 EmaiImapFetchingMessages,
01143 EmaiImapMessagesFetched,
01144 EmaiImapCopyingMessages,
01145 EmaiImapMessagesCopied,
01146 EmaiImapStoringMessagesData,
01147 EmaiImapMessagesDataStored,
01148 EmaiImapExpungingMessages,
01149 EmaiImapMessagesExpunged,
01150 EmaiImapSendingNOOP,
01151 EmaiImapNOOPSent,
01152 EmaiImapClosingConnection,
01153 EmaiImapConnectionClosed
01154 };
01155
01156
01162 typedef struct
01163 {
01166 EmaiUint32 version;
01167
01168 EmaiUint32 selector;
01169 union
01170 {
01172 struct
01173 {
01174 EmaiUint32 operationCode;
01175 } normal;
01176
01178 struct
01179 {
01180 EmaiUint32 sentSize;
01181 EmaiUint32 totalSize;
01182 } sending;
01183
01185 struct
01186 {
01187 EmaiUint32 receivedSize;
01188 EmaiUint32 totalSize;
01189 } receiving;
01190
01192 struct
01193 {
01194 EmaiConstCharPtr serverReply;
01195 EmaiUint32 replyCode;
01196 } serverError;
01197 } data;
01198 } EmaiImapCallbackData;
01199
01203 typedef EMAICALLBACKAPI(EmaiError, EmaiImapStatusCallback)(
01204 EmaiImapSession inSession,
01205 const EmaiImapCallbackData* inData,
01206 void* inUserData);
01207
01213 typedef struct
01214 {
01217 EmaiUint32 version;
01218
01223 EmaiConstUniCharPtr sourceMailboxName;
01224
01227 EmaiConstUniCharPtr destMailboxName;
01228
01230 EmaiUint32 appendedMessageCount;
01231
01234 const EmaiMessage* appendedMessages;
01235
01236 } EmaiImapCommandData;
01237
01253 typedef EMAICALLBACKAPI(void, EmaiImapResponseCallback)(
01254 EmaiImapSession inSession,
01255 const EmaiImapCommandData* inCommandData,
01256 const EmaiResponse* inResponse,
01257 void* inUserData);
01258
01259
01265 enum EmaiEnumImapUseSSLOption
01266 {
01268 EmaiImapUseSSLOption = 0x01
01269 };
01270
01287 EMAIAPI(EmaiError)
01288 EmaiImapSessionCreate(
01289 EmaiImapSession* outSession,
01290 EmaiImapResponseCallback inResponseCallback,
01291 void* inResponseUserData,
01292 EmaiImapStatusCallback inStatusCallback,
01293 void* inStatusUserData,
01294 EmaiUint32 inTimeout,
01295 EmaiOptions inOptions);
01296
01297
01304 enum EmaiEnumImapPorts
01305 {
01306 EmaiDefaultImapPort = 143,
01307 EmaiDefaultImapSSLPort = 993
01308 };
01309
01325 EMAIAPI(EmaiError)
01326 EmaiImapConnect(
01327 EmaiImapSession inSession,
01328 EmaiConstUniCharPtr inMailServer,
01329 short inPort,
01330 EmaiOptions inOptions);
01331
01349 EMAIAPI(EmaiError)
01350 EmaiImapConnectEx(
01351 EmaiImapSession inSession,
01352 EmaiConstUniCharPtr inMailServer,
01353 short inPort,
01354 const EmaiProxyInfo* inProxyInfo,
01355 void* inUserData,
01356 EmaiOptions inOptions);
01357
01368 EMAIAPI(EmaiError)
01369 EmaiImapDisconnect(
01370 EmaiImapSession inSession,
01371 EmaiOptions inOptions);
01372
01386 EMAIAPI(EmaiError)
01387 EmaiImapNoop(
01388 EmaiImapSession inSession,
01389 EmaiOptions inOptions);
01390
01401 EMAIAPI(EmaiError)
01402 EmaiImapCancel(
01403 EmaiImapSession inSession,
01404 EmaiOptions inOptions);
01405
01412 enum EmaiEnumImapAuthModes
01413 {
01415 EmaiIMAPAuthAutomatic,
01416
01418 EmaiIMAPAuthLogin,
01419
01421 EmaiIMAPAuthPlain,
01422
01424 EmaiIMAPAuthCramMD5,
01425
01427 EmaiIMAPAuthNTLM,
01428
01430 EmaiIMAPAuthLoginCommand
01431 };
01432
01450 EMAIAPI(EmaiError)
01451 EmaiImapAuthenticate(
01452 EmaiImapSession inSession,
01453 EmaiConstUniCharPtr inAccount,
01454 EmaiConstUniCharPtr inPassword,
01455 EmaiOptions inOptions);
01456
01477 EMAIAPI(EmaiError)
01478 EmaiImapSelectMailbox(
01479 EmaiImapSession inSession,
01480 EmaiConstUniCharPtr inMailbox,
01481 EmaiOptions inOptions);
01482
01500 EMAIAPI(EmaiError)
01501 EmaiImapExamineMailbox(
01502 EmaiImapSession inSession,
01503 EmaiConstUniCharPtr inMailbox,
01504 EmaiOptions inOptions);
01505
01523 EMAIAPI(EmaiError)
01524 EmaiImapCreateMailbox(
01525 EmaiImapSession inSession,
01526 EmaiConstUniCharPtr inMailbox,
01527 EmaiOptions inOptions);
01528
01545 EMAIAPI(EmaiError)
01546 EmaiImapDeleteMailbox(
01547 EmaiImapSession inSession,
01548 EmaiConstUniCharPtr inMailbox,
01549 EmaiOptions inOptions);
01550
01575 EMAIAPI(EmaiError)
01576 EmaiImapRenameMailbox(
01577 EmaiImapSession inSession,
01578 EmaiConstUniCharPtr inMailbox,
01579 EmaiConstUniCharPtr inNewMailboxName,
01580 EmaiOptions inOptions);
01581
01598 EMAIAPI(EmaiError)
01599 EmaiImapSubscribeMailbox(
01600 EmaiImapSession inSession,
01601 EmaiConstUniCharPtr inMailbox,
01602 EmaiOptions inOptions);
01603
01620 EMAIAPI(EmaiError)
01621 EmaiImapUnsubscribeMailbox(
01622 EmaiImapSession inSession,
01623 EmaiConstUniCharPtr inMailbox,
01624 EmaiOptions inOptions);
01625
01648 EMAIAPI(EmaiError)
01649 EmaiImapListMailboxes(
01650 EmaiImapSession inSession,
01651 EmaiConstUniCharPtr inReferenceName,
01652 EmaiConstUniCharPtr inWildcardedMailboxName,
01653 EmaiOptions inOptions);
01654
01672 EMAIAPI(EmaiError)
01673 EmaiImapListSubscribedMailboxes(
01674 EmaiImapSession inSession,
01675 EmaiConstUniCharPtr inReferenceName,
01676 EmaiConstUniCharPtr inWildcardedMailboxName,
01677 EmaiOptions inOptions);
01678
01686 enum EmaiEnumImapMailboxStatus
01687 {
01688
01689 EmaiMessagesNumber = 0x01,
01690
01691 EmaiRecentMessages = 0x02,
01692
01693 EmaiUidNext = 0x04,
01694
01695 EmaiUidValidity = 0x08,
01696
01697 EmaiUnseenMessages = 0x10,
01698
01699 EmaiAllStatusData = EmaiMessagesNumber | EmaiRecentMessages |
01700 EmaiUidNext | EmaiUidValidity | EmaiUnseenMessages
01701 };
01702
01725 EMAIAPI(EmaiError)
01726 EmaiImapMailboxStatus(
01727 EmaiImapSession inSession,
01728 EmaiConstUniCharPtr inMailbox,
01729 EmaiOptions inOptions);
01730
01757 EMAIAPI(EmaiError)
01758 EmaiImapAppendMessage(
01759 EmaiImapSession inSession,
01760 EmaiConstUniCharPtr inMailbox,
01761 const EmaiFlags* inMessageFlags,
01762 EmaiConstUniCharPtr inDateTime,
01763 EmaiMessage inMessage,
01764 EmaiOptions inOptions);
01765
01785 EMAIAPI(EmaiError)
01786 EmaiImapCheck(
01787 EmaiImapSession inSession,
01788 EmaiOptions inOptions);
01789
01804 EMAIAPI(EmaiError)
01805 EmaiImapCloseMailbox(
01806 EmaiImapSession inSession,
01807 EmaiOptions inOptions);
01808
01815 enum EmaiEnumImapExpungeOptions
01816 {
01821 EmaiImapNoCustomExpungeOption = 0x01,
01822 };
01823
01862 EMAIAPI(EmaiError)
01863 EmaiImapExpunge(
01864 EmaiImapSession inSession,
01865 EmaiImapSequenceSet inMessageUIDSequence,
01866 EmaiOptions inOptions);
01867
01880 enum EmaiEnumImapUIDOptions
01881 {
01885 EmaiImapUIDOption = 0x01,
01886 };
01887
01896 enum EmaiEnumImapSearchOptions
01897 {
01899 EmaiSearchAll,
01900 EmaiSearchAnswered,
01901 EmaiSearchDeleted,
01902 EmaiSearchDraft,
01903 EmaiSearchFlagged,
01904 EmaiSearchNew,
01905 EmaiSearchOld,
01906 EmaiSearchRecent,
01907 EmaiSearchSeen,
01908 EmaiSearchUnanswered,
01909 EmaiSearchUndeleted,
01910 EmaiSearchUndraft,
01911 EmaiSearchUnflagged,
01912 EmaiSearchUnseen,
01913
01915 EmaiSearchMessageSequence,
01916 EmaiSearchUid,
01917
01919 EmaiSearchBefore,
01920 EmaiSearchOn,
01921 EmaiSearchSince,
01922 EmaiSearchSentBefore,
01923 EmaiSearchSentOn,
01924 EmaiSearchSentSince,
01925
01927 EmaiSearchBcc,
01928 EmaiSearchBody,
01929 EmaiSearchCc,
01930 EmaiSearchTo,
01931 EmaiSearchFrom,
01932 EmaiSearchKeyword,
01933 EmaiSearchSubject,
01934 EmaiSearchText,
01935 EmaiSearchUnkeyword,
01936
01938 EmaiSearchHeader,
01939
01941 EmaiSearchLarger,
01942 EmaiSearchSmaller,
01943
01945 EmaiSearchNot,
01946
01948 EmaiSearchOr,
01949
01951 EmaiSearchKeyList
01952 };
01953
01961 typedef struct EmaiSearchingKey
01962 {
01964 EmaiUint32 selector;
01965 union
01966 {
01967 EmaiConstUniCharPtr searchingString;
01968
01969 EmaiImapSequenceSet messageSequence;
01970
01971 EmaiConstUniCharPtr dateString;
01972
01973 struct
01974 {
01975 EmaiConstUniCharPtr name;
01976 EmaiConstUniCharPtr searchingString;
01977 } headerField;
01978
01979 EmaiUint32 number;
01980
01982 const struct EmaiSearchingKey* searchingKey;
01983
01985 const struct EmaiSearchingKey* searchingKeys;
01986
01987 struct
01988 {
01989 EmaiUint32 count;
01991 const struct EmaiSearchingKey* searchingKeys;
01992 } keyList;
01993 } param;
01994 } EmaiSearchingKey;
01995
02002 enum EmaiEnumImapSearching
02003 {
02004 EmaiSearchingCriteriaType,
02005 EmaiSearchingKeysType
02006 };
02007
02016 typedef struct
02017 {
02020 EmaiUint32 version;
02021
02024 EmaiUint32 characterSet;
02025
02029 EmaiUint32 selector;
02030
02031 union
02032 {
02033
02034 EmaiConstUniCharPtr searchingCriteria;
02035
02036
02037 struct
02038 {
02039 EmaiUint32 count;
02041 const EmaiSearchingKey* keys;
02042 } searchingKeys;
02043 } data;
02044 } EmaiSearchingCriteria;
02045
02070 EMAIAPI(EmaiError)
02071 EmaiImapSearch(
02072 EmaiImapSession inSession,
02073 const EmaiSearchingCriteria* inSearchingCriteria,
02074 EmaiOptions inOptions);
02075
02084 enum EmaiEnumImapFetchAttribute
02085 {
02087 EmaiFetchEnvelope,
02088 EmaiFetchFlags,
02089 EmaiFetchInternalDate,
02090 EmaiFetchRFC822,
02091 EmaiFetchRFC822Header,
02092 EmaiFetchRFC822Size,
02093 EmaiFetchRFC822Text,
02094 EmaiFetchBody,
02095 EmaiFetchBodyStructure,
02096 EmaiFetchUid,
02097
02099 EmaiFetchBodySection,
02100
02102 EmaiFetchBodyPeek
02103 };
02104
02110 typedef struct
02111 {
02113 EmaiUint32 selector;
02114 union
02115 {
02122 struct
02123 {
02125 EmaiConstUniCharPtr section;
02127 EmaiConstUniCharPtr partial;
02128 } data;
02129 } param;
02130 } EmaiFetchMessageAttribute;
02131
02140 enum EmaiEnumImapDataFetchOptions
02141 {
02143 EmaiDataFetchAll,
02144
02146 EmaiDataFetchFull,
02147
02149 EmaiDataFetchFast,
02150
02152 EmaiDataFetchAttr,
02153
02155 EmaiDataFetchString
02156 };
02157
02165 typedef struct
02166 {
02169 EmaiUint32 version;
02170
02172 EmaiUint32 selector;
02173 union
02174 {
02175 struct
02176 {
02177 EmaiUint32 attributeCount;
02178 const EmaiFetchMessageAttribute*
02179 attributes;
02180 } attr;
02181
02182 EmaiConstUniCharPtr data;
02183 } param;
02184 } EmaiFetchMessageData;
02185
02205 EMAIAPI(EmaiError)
02206 EmaiImapFetch(
02207 EmaiImapSession inSession,
02208 EmaiImapSequenceSet inMessageSequence,
02209 const EmaiFetchMessageData* inMessageData,
02210 EmaiOptions inOptions);
02211
02218 enum EmaiEnumImapStoreOptions
02219 {
02221 EmaiStoreSetFlags,
02222 EmaiStoreAddFlags,
02223 EmaiStoreRemoveFlags,
02224
02225 EmaiStoreSilent = 0x10
02226 };
02227
02237 enum EmaiEnumImapDataStoreOptions
02238 {
02240 EmaiDataStoreAttr,
02241
02243 EmaiDataStoreString
02244 };
02245
02253 typedef struct
02254 {
02257 EmaiUint32 version;
02258
02260 EmaiUint32 selector;
02261 union
02262 {
02263 struct
02264 {
02266 EmaiUint32 options;
02267
02269 EmaiFlags flags;
02270 } attr;
02271
02273 EmaiConstUniCharPtr data;
02274 } param;
02275 } EmaiStoreMessageData;
02276
02295 EMAIAPI(EmaiError)
02296 EmaiImapStore(
02297 EmaiImapSession inSession,
02298 EmaiImapSequenceSet inMessageSequence,
02299 const EmaiStoreMessageData* inMessageData,
02300 EmaiOptions inOptions);
02301
02329 EMAIAPI(EmaiError)
02330 EmaiImapCopy(
02331 EmaiImapSession inSession,
02332 EmaiImapSequenceSet inMessageSequence,
02333 EmaiConstUniCharPtr inMailbox,
02334 EmaiOptions inOptions);
02335
02336 #ifdef __cplusplus
02337 }
02338 #endif
02339
02340 #endif