00001
00015 #ifndef __MESSAGEPARTENUMERATOR_HPP__
00016 #define __MESSAGEPARTENUMERATOR_HPP__
00017
00018 #include <EmaiMessagePartEnumerator.hpp>
00019 #include <vector>
00020
00025 class MessagePartEnumerator : public Emai::MessagePartEnumerator
00026 {
00027
00028 protected:
00029 Emai::UniString mSubject;
00030
00031 Emai::ContactList mContactFrom;
00032 Emai::ContactList mContactTo;
00033 Emai::ContactList mContactSender;
00034 Emai::ContactList mContactReplyTo;
00035 Emai::ContactList mContactBCC;
00036 Emai::ContactList mContactCC;
00037
00038 Emai::MessagePart mHtmlPart;
00039
00040 typedef std::vector<Emai::MessagePart>
00041 MessagePartArray;
00042
00043 MessagePartArray mAttachments;
00044
00045 MessagePartArray mInlines;
00046
00047 MessagePartArray mTextParts;
00048
00049
00057 virtual void OnContacts(
00058 Emai::ContactList inContactList,
00059 EmaiOptions inOptions);
00060
00066 virtual void OnSubject(
00067 EmaiConstUniCharPtr inSubject);
00068
00075 virtual void OnPlainTextPart(
00076 Emai::MessagePart& inPart,
00077 const EmaiPartData& inPartData);
00078
00085 virtual void OnUnicodePlainTextPart(
00086 Emai::MessagePart& inPart,
00087 const EmaiPartData& inPartData);
00088
00095 virtual void OnHtmlTextPart(
00096 Emai::MessagePart& inPart,
00097 const EmaiPartData& inPartData);
00098
00105 virtual void OnDataPart(
00106 Emai::MessagePart& inPart,
00107 const EmaiPartData& inPartData);
00108
00115 virtual void OnCompositePartStart(
00116 Emai::MessagePart& inPart,
00117 const EmaiPartData& inPartData);
00118
00125 virtual void OnCompositePartEnd(
00126 Emai::MessagePart& inPart,
00127 const EmaiPartData& inPartData);
00128
00134 virtual void OnPart(
00135 const EmaiPartData& inPartData);
00136
00144 Emai::ContactList& GetContactStorage(
00145 EmaiOptions inOptions);
00146
00155 EmaiConstUniCharPtr GetFileName(
00156 const EmaiPartData& inPartData);
00157
00167 void GenerateFileName(
00168 Emai::MessagePart& inPart,
00169 Emai::UniString& outFileName);
00170
00178 void AppendPathDelimiter(
00179 Emai::UniString& ioPath);
00180
00188 FILE* OpenAttachmentFile(
00189 const Emai::UniString& inFilePath);
00190
00195 virtual void PreProcessMessageParts();
00196
00201 virtual void PostProcessMessageParts();
00202
00203 public:
00204 MessagePartEnumerator(
00205 const Emai::Message& inMessage):
00206 Emai::MessagePartEnumerator(inMessage),
00207 mHtmlPart(NULL, false)
00208 {
00209 }
00210
00216 const Emai::UniString& GetSubject();
00217
00225 Emai::ContactList& GetContacts(
00226 EmaiOptions inOptions);
00227
00233 void GetText(
00234 Emai::String& outText);
00235
00241 void GetUnicodeText(
00242 Emai::UniString& outText);
00243
00249 void GetHtml(
00250 Emai::String& outHtml);
00251
00257 EmaiUint32 GetAttachmentsCount();
00258
00267 void GetAttachmentAtIndex(
00268 const EmaiUint32 inIndex,
00269 Emai::UniString& outFileName,
00270 EmaiCharPtr outBuffer,
00271 EmaiUint32& ioLength);
00272
00283 bool SaveAttachmentAtIndex(
00284 const bool inIsInline,
00285 const EmaiUint32 inIndex,
00286 EmaiConstUniCharPtr inPath,
00287 EmaiConstUniCharPtr inNewName);
00288
00294 EmaiUint32 GetInlinesCount();
00295
00305 void GetInlineAtIndex(
00306 const EmaiUint32 inIndex,
00307 Emai::UniString& outName,
00308 Emai::UniString& outContentID,
00309 EmaiCharPtr outBuffer,
00310 EmaiUint32& ioLength);
00311
00317 EmaiUint32 GetTextPartsCount();
00318
00325 void GetUnicodeTextAtIndex(
00326 const EmaiUint32 inIndex,
00327 Emai::UniString& outText);
00328
00335 void GetTextAtIndex(
00336 const EmaiUint32 inIndex,
00337 Emai::String& outText);
00338
00339 };
00340
00341 #endif