Dacons LLP Mailit for C/C++ Version 1.0.8

Emai::MessagePartEnumerator Class Reference

Utility class which implements basic algorithm for enumerating parts in the message. More...

#include <EmaiMessagePartEnumerator.hpp>

Inheritance diagram for Emai::MessagePartEnumerator:

MessagePartEnumerator List of all members.

Public Member Functions

virtual ~MessagePartEnumerator ()
 MessagePartEnumerator (const Message &inMessage)
void Enumerate ()
 Starts message enumerating.

Protected Member Functions

virtual void ProcessHeaderFields ()
 Process message header fields. Extract message sender, recipients, subject, etc.
virtual void ProcessContacts (EmaiOptions inOptions)
 Process message contacts.
virtual void ProcessMessagePart (MessagePart &inPart)
 Process message parts.
virtual void OnContacts (ContactList inContactList, EmaiOptions inOptions)=0
 Pure virtual function; handles the contact fields receiving.
virtual void OnSubject (EmaiConstUniCharPtr inSubject)=0
 Pure virtual function; handles the message subject field receiving.
virtual void OnPlainTextPart (MessagePart &inPart, const EmaiPartData &inPartData)=0
 Pure virtual function; this method will be triggered, when Plain Text message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartPlainTextData value.
virtual void OnUnicodePlainTextPart (MessagePart &inPart, const EmaiPartData &inPartData)=0
 Pure virtual function; this method will be triggered, when Unicode Plain Text message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartUnicodeTextData value.
virtual void OnHtmlTextPart (MessagePart &inPart, const EmaiPartData &inPartData)=0
 Pure virtual function; this method will be triggered, when HTML Text message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartHTMLData value.
virtual void OnDataPart (MessagePart &inPart, const EmaiPartData &inPartData)=0
 Pure virtual function; this method will be triggered, when Data message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartDataData value.
virtual void OnCompositePartStart (MessagePart &inPart, const EmaiPartData &inPartData)=0
 Pure virtual function; this method will be triggered, when Composite message part start is found during message source code processing. For example, when Multipart/Mixed block begins. EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartCompositeData value.
virtual void OnCompositePartEnd (MessagePart &inPart, const EmaiPartData &inPartData)=0
 Pure virtual function; this method will be triggered, when Composite message part end is found during message source code processing. For example, when Multipart/Mixed block ends. EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartCompositeData value.
virtual void ProcessMessageParts ()
 Processes all of the message parts, according to the part tree.
virtual void PreProcessMessageParts ()
 Called whenever message parts are about to be enumerated. Default implementation doesn nothing.
virtual void PostProcessMessageParts ()
 Called whenever message parts are enumerated. Default implementation doesn nothing.

Protected Attributes

Message mMessage

Detailed Description

Utility class which implements basic algorithm for enumerating parts in the message.

Definition at line 31 of file EmaiMessagePartEnumerator.hpp.


Member Function Documentation

void MessagePartEnumerator::ProcessHeaderFields (  )  [inline, protected, virtual]

Process message header fields. Extract message sender, recipients, subject, etc.

See also:
MessagePartEnumerator::ProcessContacts

Definition at line 251 of file EmaiMessagePartEnumerator.hpp.

References EmaiBCC, EmaiCC, EmaiFrom, EmaiReplyTo, EmaiSender, EmaiSubject, EmaiTo, Emai::Message::GetField(), mMessage, MessagePartEnumerator::OnSubject(), and ProcessContacts().

Referenced by Enumerate().

00252 {
00253     ProcessContacts(EmaiFrom);
00254     ProcessContacts(EmaiTo);
00255     ProcessContacts(EmaiCC);
00256     ProcessContacts(EmaiSender);
00257     ProcessContacts(EmaiReplyTo);
00258     ProcessContacts(EmaiBCC);
00259     EmaiConstUniCharPtr subject = mMessage.GetField(NULL, EmaiSubject);
00260     if (subject != NULL)
00261         OnSubject(subject);
00262 }

void MessagePartEnumerator::ProcessContacts ( EmaiOptions  inOptions  )  [inline, protected, virtual]

Process message contacts.

Parameters:
EmaiOptions inOptions
See also:
Emai::Message::GetContactList

EmaiMessageCopyContactList

Definition at line 265 of file EmaiMessagePartEnumerator.hpp.

References Emai::ContactList::AddContact(), Emai::Message::CopyContactList(), Emai::Message::GetField(), mMessage, and MessagePartEnumerator::OnContacts().

Referenced by ProcessHeaderFields().

00268 {
00269     Emai::ContactList contactList;
00270     try
00271     {
00272         contactList = mMessage.CopyContactList(inOptions);
00273     }
00274     catch (Emai::Exception& /*exception*/)
00275     {
00276         //contact list cannot be parsed: just use noone@nowhere
00277         EmaiUniChar dummyAddress[] = {'n', 'o', 'o', 'n', 'e', '@', 'n', 'o', 'w', 'h', 'e', 'r', 'e', '\0'};
00278         contactList.AddContact(mMessage.GetField(NULL, inOptions), dummyAddress);
00279     }
00280     if (contactList != NULL)
00281         OnContacts(contactList, inOptions);
00282 }

void MessagePartEnumerator::ProcessMessagePart ( MessagePart inPart  )  [inline, protected, virtual]

Process message parts.

Parameters:
MessagePart inPart
See also:
Emai::MessagePart::GetRootPart

Definition at line 305 of file EmaiMessagePartEnumerator.hpp.

References EmaiPartData::composite, EmaiPartCompositeData, EmaiPartDataData, EmaiPartHTMLData, EmaiPartPlainTextData, EmaiPartUnicodeTextData, EmaiStructureVersionFirst, Emai::MessagePart::GetData(), MessagePartEnumerator::OnCompositePartEnd(), MessagePartEnumerator::OnCompositePartStart(), MessagePartEnumerator::OnDataPart(), MessagePartEnumerator::OnHtmlTextPart(), MessagePartEnumerator::OnPlainTextPart(), MessagePartEnumerator::OnUnicodePlainTextPart(), EmaiPartData::partData, EmaiPartData::partType, EmaiCompositePartData::subPartCount, and EmaiCompositePartData::subParts.

Referenced by ProcessMessageParts().

00308 {
00309     EmaiPartData dataDesc = {EmaiStructureVersionFirst};
00310     try
00311     {
00312         inPart.GetData(dataDesc);
00313         switch (dataDesc.partType)
00314         {
00315             case EmaiPartPlainTextData:
00316                 OnPlainTextPart(inPart, dataDesc);
00317                 break;
00318             case EmaiPartUnicodeTextData:
00319                 OnUnicodePlainTextPart(inPart, dataDesc);
00320                 break;
00321             case EmaiPartHTMLData:
00322                 OnHtmlTextPart(inPart, dataDesc);
00323                 break;
00324             case EmaiPartDataData:
00325                 OnDataPart(inPart, dataDesc);
00326                 break;
00327             case EmaiPartCompositeData:
00328             {
00329                 OnCompositePartStart(inPart, dataDesc);
00330 
00331                 for (EmaiUint32 i = 0; i < dataDesc.partData.composite.subPartCount;
00332                     ++i)
00333                 {
00334                     MessagePart subPart(dataDesc.partData.composite.subParts[i], true);
00335                     ProcessMessagePart(subPart);
00336                 }
00337 
00338                 OnCompositePartEnd(inPart, dataDesc);
00339 
00340                 break;
00341             }
00342             default:
00343                 break;
00344         }
00345     }
00346     catch (Emai::Exception& /*exception*/)
00347     {
00348     }
00349 }

virtual void Emai::MessagePartEnumerator::OnContacts ( ContactList  inContactList,
EmaiOptions  inOptions 
) [protected, pure virtual]

Pure virtual function; handles the contact fields receiving.

Parameters:
inContactList - object, which will be filled with the message contacts (according to the inOptions type specification)
inOptions - type of the contact field

Implemented in MessagePartEnumerator.

virtual void Emai::MessagePartEnumerator::OnSubject ( EmaiConstUniCharPtr  inSubject  )  [protected, pure virtual]

Pure virtual function; handles the message subject field receiving.

Parameters:
EmaiConstUniCharPtr inSubject - will be filled with the message subject

Implemented in MessagePartEnumerator.

virtual void Emai::MessagePartEnumerator::OnPlainTextPart ( MessagePart inPart,
const EmaiPartData inPartData 
) [protected, pure virtual]

Pure virtual function; this method will be triggered, when Plain Text message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartPlainTextData value.

Parameters:
MessagePart& inPart - original message part
const EmaiPartData& inPartData - parsed message part data
See also:
Emai::EmaiPartData

Emai::EmaiEnumMessagePartType

Implemented in MessagePartEnumerator.

virtual void Emai::MessagePartEnumerator::OnUnicodePlainTextPart ( MessagePart inPart,
const EmaiPartData inPartData 
) [protected, pure virtual]

Pure virtual function; this method will be triggered, when Unicode Plain Text message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartUnicodeTextData value.

Parameters:
MessagePart& inPart - original message part
const EmaiPartData& inPartData - parsed message part data
See also:
Emai::EmaiPartData

Emai::EmaiEnumMessagePartType

Implemented in MessagePartEnumerator.

virtual void Emai::MessagePartEnumerator::OnHtmlTextPart ( MessagePart inPart,
const EmaiPartData inPartData 
) [protected, pure virtual]

Pure virtual function; this method will be triggered, when HTML Text message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartHTMLData value.

Parameters:
MessagePart& inPart
const EmaiPartData& inPartData
See also:
Emai::EmaiPartData

Emai::EmaiEnumMessagePartType

Implemented in MessagePartEnumerator.

virtual void Emai::MessagePartEnumerator::OnDataPart ( MessagePart inPart,
const EmaiPartData inPartData 
) [protected, pure virtual]

Pure virtual function; this method will be triggered, when Data message part is found during message source code processing EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartDataData value.

Parameters:
MessagePart& inPart
const EmaiPartData& inPartData
See also:
Emai::EmaiPartData

Emai::EmaiEnumMessagePartType

Implemented in MessagePartEnumerator.

virtual void Emai::MessagePartEnumerator::OnCompositePartStart ( MessagePart inPart,
const EmaiPartData inPartData 
) [protected, pure virtual]

Pure virtual function; this method will be triggered, when Composite message part start is found during message source code processing. For example, when Multipart/Mixed block begins. EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartCompositeData value.

Parameters:
MessagePart& inPart
const EmaiPartData& inPartData
See also:
Emai::EmaiPartData

Emai::EmaiEnumMessagePartType

Implemented in MessagePartEnumerator.

virtual void Emai::MessagePartEnumerator::OnCompositePartEnd ( MessagePart inPart,
const EmaiPartData inPartData 
) [protected, pure virtual]

Pure virtual function; this method will be triggered, when Composite message part end is found during message source code processing. For example, when Multipart/Mixed block ends. EmaiPartData::partType selector will be set to the EmaiEnumMessagePartType::EmaiPartCompositeData value.

Parameters:
MessagePart& inPart
const EmaiPartData& inPartData
See also:
Emai::EmaiPartData

Emai::EmaiEnumMessagePartType

Implemented in MessagePartEnumerator.


The documentation for this class was generated from the following file: