Dacons LLP Mailit for C/C++ Version 1.0.8

EmaiMessage.h

Go to the documentation of this file.
00001 
00014 #ifndef __EMAIMESSAGE_H__
00015 #define __EMAIMESSAGE_H__
00016 
00017 #include <EmaiObject.h>
00018 
00019 #ifdef __cplusplus
00020     extern "C" {
00021 #endif
00022 
00026 typedef struct EmaiOpaqueMessage*               EmaiMessage;
00027 
00031 typedef struct EmaiOpaqueMessagePart*           EmaiMessagePart;
00032 
00037 typedef struct EmaiOpaqueStringList*            EmaiStringList;
00038 
00043 typedef struct EmaiOpaqueContactList*           EmaiContactList;
00044 
00053 typedef struct EmaiOpaqueContentField*          EmaiContentField;
00054 
00055 
00062 enum EmaiEnumMessageCharset
00063 {
00064     EmaiUSASCII,
00065     EmaiKOI_8R,
00066     EmaiKOI_8U,
00067     EmaiISO8859_1,
00068     EmaiISO8859_2,
00069     EmaiISO8859_3,
00070     EmaiISO8859_4,
00071     EmaiISO8859_5,
00072     EmaiISO8859_6,
00073     EmaiISO8859_7,
00074     EmaiISO8859_8,
00075     EmaiISO8859_9,
00076     EmaiISO8859_10,
00077     EmaiISO8859_11,
00078     EmaiISO8859_13,
00079     EmaiISO8859_14,
00080     EmaiISO8859_15,
00081     EmaiISO8859_16,
00082     EmaiWindows1250,
00083     EmaiWindows1251,
00084     EmaiWindows1252,
00085     EmaiWindows1253,
00086     EmaiWindows1254,
00087     EmaiWindows1255,
00088     EmaiWindows1256,
00089     EmaiWindows1257,
00090     EmaiWindows1258,
00091     EmaiBig5,
00092     EmaiKSC5601_1987,
00093     EmaiGB2312,
00094     EmaiISO_2022_JP,
00095     EmaiISO_2022_JP_2,
00096     EmaiISO_2022_JP_1,
00097     EmaiISO_2022_JP_3,
00098     EmaiCSISO_2022_JP,
00099     EmaiEUC_JP,
00100     EmaiISO_2022_CN,
00101     EmaiISO_2022_CN_EXT,
00102     EmaiHZ_GB_2312,
00103     EmaiISO_2022_KR,
00104     EmaiEUC_KR,
00105     EmaiUTF_8,
00106     EmaiMacRomanLatin1,
00107 
00108     EmaiUnknown                         = 0xFFFFFFFF
00109 };
00110 
00111 
00120 EMAIAPI(EmaiError)
00121 EmaiStringListCreate(
00122         EmaiStringList* outStringList,
00123         EmaiOptions inOptions);
00124 
00134 EMAIAPI(EmaiError)
00135 EmaiStringListGetCount(
00136         EmaiStringList inStringList,
00137         EmaiUint32* outCount,
00138         EmaiOptions inOptions);
00139 
00149 EMAIAPI(EmaiError)
00150 EmaiStringListAddString(
00151         EmaiStringList inStringList,
00152         EmaiConstUniCharPtr inString,
00153         EmaiOptions inOptions);
00154 
00166 EMAIAPI(EmaiConstUniCharPtr)
00167 EmaiStringListGetString(
00168         EmaiStringList inStringList,
00169         EmaiUint32 inIndex,
00170         EmaiOptions inOptions);
00171 
00172 
00181 EMAIAPI(EmaiError)
00182 EmaiContactListCreate(
00183         EmaiContactList* outContactList,
00184         EmaiOptions inOptions);
00185 
00197 EMAIAPI(EmaiError)
00198 EmaiContactListGetCount(
00199         EmaiContactList inContactList,
00200         EmaiUint32* outCount,
00201         EmaiOptions inOptions);
00202 
00220 EMAIAPI(EmaiError)
00221 EmaiContactListAddContact(
00222         EmaiContactList inContactList,
00223         EmaiConstUniCharPtr inName,
00224         EmaiConstUniCharPtr inAddress,
00225         const void* inReserved, /*must be NULL*/
00226         EmaiOptions inOptions);
00227 
00241 EMAIAPI(EmaiConstUniCharPtr)
00242 EmaiContactListGetContactName(
00243         EmaiContactList inContactList,
00244         EmaiUint32 inIndex,
00245         EmaiOptions inOptions);
00246 
00260 EMAIAPI(EmaiConstUniCharPtr)
00261 EmaiContactListGetContactAddress(
00262         EmaiContactList inContactList,
00263         EmaiUint32 inIndex,
00264         EmaiOptions inOptions);
00265 
00266 
00280 EMAIAPI(EmaiError)
00281 EmaiContentFieldCreate(
00282         EmaiContentField* outContentField,
00283         EmaiConstUniCharPtr inValue,
00284         EmaiOptions inOptions);
00285 
00300 EMAIAPI(EmaiError)
00301 EmaiContentFieldAddParameter(
00302         EmaiContentField inContentField,
00303         EmaiConstUniCharPtr inParamName,
00304         EmaiConstUniCharPtr inParamValue,
00305         EmaiOptions inOptions);
00306 
00319 EMAIAPI(EmaiConstUniCharPtr)
00320 EmaiContentFieldGetValue(
00321         EmaiContentField inContentField,
00322         EmaiOptions inOptions);
00323 
00336 EMAIAPI(EmaiError)
00337 EmaiContentFieldGetParameterCount(
00338         EmaiContentField inContentField,
00339         EmaiUint32* outCount,
00340         EmaiOptions inOptions);
00341 
00355 EMAIAPI(EmaiConstUniCharPtr)
00356 EmaiContentFieldGetParameterName(
00357         EmaiContentField inContentField,
00358         EmaiUint32 inIndex,
00359         EmaiOptions inOptions);
00360 
00374 EMAIAPI(EmaiConstUniCharPtr)
00375 EmaiContentFieldGetParameterValue(
00376         EmaiContentField inContentField,
00377         EmaiUint32 inIndex,
00378         EmaiOptions inOptions);
00379 
00394 EMAIAPI(EmaiConstUniCharPtr)
00395 EmaiContentFieldFindParameterValue(
00396         EmaiContentField inContentField,
00397         EmaiConstUniCharPtr inParamName,
00398         EmaiOptions inOptions);
00399 
00400 
00411 EMAIAPI(EmaiError)
00412 EmaiMessageCreate(
00413         EmaiMessage* outMessage,
00414         EmaiMessagePart inRootMessagePart,
00415         EmaiOptions inOptions);
00416 
00427 EMAIAPI(EmaiError)
00428 EmaiMessageCreateFromData(
00429         EmaiMessage* outMessage,
00430         const void* inData,
00431         EmaiUint32 inDataSize,
00432         EmaiOptions inOptions);
00433 
00443 enum EmaiEnumMessageFieldType
00444 {
00445     EmaiFrom                                = 1,
00446     EmaiTo,
00447     EmaiCC,
00448     EmaiSender,
00449     EmaiReplyTo,
00450     EmaiBCC,
00451     
00452     EmaiSubject,
00453     EmaiMimeVersion,
00454     EmaiXPriority,
00455 };
00456 
00473 EMAIAPI(EmaiError)
00474 EmaiMessageSetField(
00475         EmaiMessage inMessage,
00476         EmaiConstUniCharPtr inFieldName,        /*can be NULL*/
00477         EmaiConstUniCharPtr inFieldValue,       /*can be NULL*/
00478         EmaiOptions inOptions);
00479 
00480 
00491 EMAIAPI(EmaiError)
00492 EmaiMessageSetContactList(
00493         EmaiMessage inMessage,
00494         EmaiContactList inContactList,
00495         EmaiOptions inOptions);
00496 
00497 
00510 enum
00511 {
00512     EmaiFailOnUnknownCharset                    = 0x8000000
00513 };
00514 
00515 
00516 
00522 enum EmaiEnumMessageEncoding
00523 {
00524     EmaiEncodingAutomatic,
00525     EmaiEncodingBase64,
00526     EmaiEncodingQuotedPrintable,
00527     EmaiEncoding7bit,
00528     EmaiEncodingUnknown
00529 };
00530 
00531 /*
00532 // The structures below are used to setup or retrieve data from the message part
00533 */
00534 
00540 typedef struct
00541 {
00542     EmaiConstCharPtr            text;
00543     EmaiUint32                  textSize;
00544 
00546     EmaiUint32                  characterSet;
00547 } EmaiPlainTextPartData;
00548 
00552 typedef struct
00553 {
00554     EmaiConstCharPtr            html;
00555     EmaiUint32                  htmlSize;
00556 } EmaiHtmlTextPartData;
00557 
00561 typedef struct
00562 {
00563     EmaiConstUniCharPtr         text;
00564 
00566     EmaiUint32                  textSize;
00567 } EmaiUnicodeTextPartData;
00568 
00572 typedef struct
00573 {
00574     const void*                 data;
00575     EmaiUint32                  dataSize;
00576 } EmaiDataPartData;
00577 
00578 /*
00579 // Attachment external file data
00580 */
00581 
00586 typedef struct
00587 {
00589     EmaiConstUniCharPtr         filePath;
00590 } EmaiFilePartData;
00591 
00595 typedef struct
00596 {
00597     EmaiUint32                  subPartCount;
00598     const EmaiMessagePart*      subParts;       
00601 } EmaiCompositePartData;
00602 
00610 enum EmaiEnumMessagePartType
00611 {
00612     EmaiPartPlainTextData,
00613     EmaiPartUnicodeTextData,
00614     EmaiPartHTMLData,
00615     EmaiPartDataData,
00616     EmaiPartFileData,
00617     EmaiPartCompositeData
00618 };
00619 
00626 typedef struct
00627 {
00630     EmaiUint32                  version;
00631 
00632     /*
00633     // Members below are used to describe the most popular header fields
00634     */
00635 
00637     EmaiConstUniCharPtr         contentID;
00638 
00640     EmaiContentField            contentType;
00641 
00643     EmaiContentField            contentDisposition;
00644 
00646     EmaiUint32                  encoding;
00647 
00649     EmaiUint32                  partType;
00650 
00653     union
00654     {
00657         EmaiPlainTextPartData           plainText;
00658 
00661         EmaiUnicodeTextPartData         unicodeText;
00662 
00665         EmaiHtmlTextPartData            htmlText;
00666 
00669         EmaiDataPartData                data;
00670 
00673         EmaiFilePartData                file;
00674 
00677         EmaiCompositePartData           composite;
00678     }                           partData;
00679     
00680 } EmaiPartData;
00681 
00692 EMAIAPI(EmaiError)
00693 EmaiMessagePartCreate(
00694         EmaiMessagePart* outMessagePart,
00695         const EmaiPartData* inData,
00696         EmaiOptions inOptions);
00697 
00710 EMAIAPI(EmaiError)
00711 EmaiMessagePartAddSubParts(
00712         EmaiMessagePart inCompositeMessagePart,
00713         const EmaiMessagePart inSubParts[],
00714         EmaiUint32 inSubPartCount,
00715         EmaiOptions inOptions);
00716 
00727 EMAIAPI(EmaiError)
00728 EmaiMessageGetRootPart(
00729         EmaiMessage inMessage,
00730         EmaiMessagePart* outRootMessagePart,
00731         EmaiOptions inOptions);
00732 
00743 EMAIAPI(EmaiError)
00744 EmaiMessagePartGetMessage(
00745         EmaiMessagePart inMessagePart,
00746         EmaiMessage* outMessage,
00747         EmaiOptions inOptions);
00748 
00767 EMAIAPI(EmaiError)
00768 EmaiMessagePartGetSubParts(
00769         EmaiMessagePart inCompositeMessagePart,
00770         EmaiMessagePart outSubParts[],          
00771         EmaiUint32* ioSubPartCount,
00772         EmaiOptions inOptions);
00773 
00779 enum
00780 {
00781     EmaiGetUnicodeTextData,
00782     EmaiGetNativeTextData
00783 };
00784 
00801 EMAIAPI(EmaiError)
00802 EmaiMessagePartGetData(
00803         EmaiMessagePart inMessagePart,
00804         EmaiPartData* outData,
00805         EmaiOptions inOptions);
00806 
00819 EMAIAPI(EmaiError)
00820 EmaiMessageCopyFields(
00821         EmaiMessage inMessage,
00822         EmaiStringList* outFieldNames,
00823         EmaiStringList* outFieldValues,
00824         EmaiOptions inOptions);
00825 
00843 EMAIAPI(EmaiError)
00844 EmaiMessageGetFieldByName(
00845         EmaiMessage inMessage,
00846         EmaiConstUniCharPtr inFieldName,
00847         EmaiConstUniCharPtr* outFieldValue,
00848         EmaiOptions inOptions);
00849 
00850 /*
00851 // @brief   Copies contact field from the message header.
00852 //
00853 // @param   inMessage - message object to be examined
00854 // @param   outContactList - on exit will be filled with copy of the contact list
00855 //                  from the message, any modifications of the returned
00856 //                  contact list doesn't affect message contacts, caller is
00857 //                  responsible for freeing of the list using EmaiObjectRelease
00858 // @param   inOptions - EmaiFrom, EmaiTo, etc. You can also combine this values
00859 //                  with EmaiFailOnUnknownCharset option
00860 //
00861 // @return  Result code (See @ref EmaiEnumResultCodes)
00862 //
00863 // @see     Emai::Message::GetContactList
00864 // @see     EmaiObjectRelease
00865 */
00866 EMAIAPI(EmaiError)
00867 EmaiMessageCopyContactList(
00868         EmaiMessage inMessage,
00869         EmaiContactList* outContactList,
00870         EmaiOptions inOptions);
00871 
00872 
00873 /*
00874 // @brief   Retrieves message source.
00875 //
00876 // @param   inMessage - message object to be examined
00877 // @param   outData - if non-NULL, on exit will be filled with address of the
00878 //                  begginning of the message source, this data is stored
00879 //                  internally in message object and you should not modify or
00880 //                  release it
00881 // @param   outHeaderSize - if non-NULL, on exit will be filled with size of the
00882 //                  message header in bytes
00883 // @param   outDataSize - if non-NULL, on exit will be filled with size of the
00884 //                  message source in bytes
00885 // At least one of outData, outDataSize and outHeaderSize parameters should be
00886 // non-NULL
00887 // @param   inOptions - not used in current version, use EmaiNullOptions
00888 //
00889 // @return  Result code (See @ref EmaiEnumResultCodes)
00890 //
00891 // @see     Emai::Message::GetContactList
00892 */
00893 EMAIAPI(EmaiError)
00894 EmaiMessageGetData(
00895         EmaiMessage inMessage,
00896         const void** outData,       
00897         EmaiUint32* outHeaderSize,  
00898         EmaiUint32* outDataSize,    
00899         EmaiOptions inOptions);
00900 
00901 
00902 /*
00903 // @brief   Retrieves message received date and time.
00904 //
00905 // @param   inMessage - message object to be examined
00906 // @param   inTimeFormat - format printf-like string
00907 // @param   outDateTime - on successful exit contains received formated date and time
00908 // @param   inOptions - not used in current version, use EmaiNullOptions
00909 //
00910 // @return  Result code (See @ref EmaiEnumResultCodes)
00911 //
00912 */
00913 EMAIAPI(EmaiError)
00914 EmaiMessageGetReceivedDateTime(
00915         EmaiMessage inMessage,
00916         tm* outDateTime,
00917         EmaiOptions inOptions);
00918 
00919 #ifdef __cplusplus
00920     }
00921 #endif
00922 
00923 #endif /*__EMAIMESSAGE_H__*/