diff -r 7e4e4bcc75b6 -r 94cccd85bd25 email/imap4mtm/imapsession/src/cimapbodystructurebuilder.cpp --- a/email/imap4mtm/imapsession/src/cimapbodystructurebuilder.cpp Tue May 25 12:38:02 2010 +0300 +++ b/email/imap4mtm/imapsession/src/cimapbodystructurebuilder.cpp Wed Jun 09 09:37:26 2010 +0300 @@ -216,8 +216,16 @@ // Found a "MESSAGE/RFC822" body structure. // This contains an embedded bodystructure, so parse up to the structure, // and then allow the loop to parse the embedded structure. - ParseBodyTypeMessageRfc822L(); - parseStep = EParseNewBodyStructure; + TRAPD(err, ParseBodyTypeMessageRfc822L()); + if(err == KErrImapCorrupt) + { + parseStep =EParseRemainderMessageRfc822; + } + else + { + parseStep = EParseNewBodyStructure; + } + } break; case EParseRemainderMessageRfc822: @@ -520,13 +528,14 @@ { // body-fields SP SP body SP body-fld-lines ParseBodyFieldsL(); - - // envelope - ParseEnvelopeL(); - - // Expect a body substructure next. - // Position iAtomWalker at the opening bracket, ready for ParseBodyStructureTypeL - iAtomWalker->WalkAcrossL(ETrue); + //Sometime RFCb22 message has empty evvelopel, in that case we are traping this and processed. + TRAPD(err, ParseEnvelopeL()); + + // Expect a body substructure next. + // Position iAtomWalker at the opening bracket, ready for ParseBodyStructureTypeL + iAtomWalker->WalkAcrossL(ETrue); + if(err == KErrImapCorrupt) + CImapCommand::CorruptDataL(iLogId); } /**