meetingrequest/mrtasks/src/cesmrfsemailmanager.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 13 8592a65ad3fb
--- a/meetingrequest/mrtasks/src/cesmrfsemailmanager.cpp	Mon Mar 15 12:39:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,756 +0,0 @@
-/*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation for ESMR Email Manager
-*
-*/
-
-#include <cmrmailboxutils.h>
-#include <ecom/implementationinformation.h>
-
-#include "emailtrace.h"
-#include "cesmrfsemailmanager.h"
-
-#include "cfsmailclient.h"
-#include "cfsmailbox.h"
-#include "cfsmailmessage.h"
-#include "cfsmailmessagepart.h"
-#include "mmrinfoprocessor.h"
-#include "cfsmailcommon.h"
-#include "cfsmailplugin.h"
-
-#include "tesmrinputparams.h"
-#include "esmrconfig.hrh"
-#include "esmrhelper.h"
-#include "esmrinternaluid.h"
-
-
-// Unnamed namespace for local definitions
-namespace {
-
-// Definition for mime types
-_LIT(KMimeTextCalRequest,  "text/calendar; method=REQUEST; name=\"meeting.ics\"");
-_LIT(KMimeTextCalResponse, "text/calendar; method=RESPONSE; name=\"response.ics\"");
-_LIT(KMimeTextCalCancel,   "text/calendar; method=CANCEL; name=\"cancel.ics\"");
-_LIT(KMimeTextCalContentClass, "urn:content-classes:calendarmessage" );
-
-// Definition for temporary calendar file
-//<cmail> hardcoded paths removal
-//_LIT(KFileAndPath, "c:\\temp\\temp.ics"); //codescanner::driveletters
-_LIT(KTempFileName, "temp\\temp.ics");
-//</cmail>
-
-// Definition for email address comparison
-const TInt KEqualEmailAddress(0);
-
-// Definition for first index
-const TInt KFirstIndex(0);
-
-/**
- * Cleanup operations for RPointerArray.
- *
- * @param aArray Pointer to RPointerArray.
- */
-void MessagePartPointerArrayCleanup( TAny* aArray )
-    {
-    RPointerArray<CFSMailMessagePart>* messagePartArray =
-        static_cast<RPointerArray<CFSMailMessagePart>*>( aArray );
-
-    messagePartArray->ResetAndDestroy();
-    messagePartArray->Close();
-    }
-
-#ifdef _DEBUG
-
-// Definition for panic text
-_LIT( KEMailManagerPanicTxt, "EMailManager" );
-
-/** Enumeration for email manager panic codes */
-enum TESMREMailManagerPanic
-    {
-    EESMRMailboxNotFound = 0,
-    EESMRMailClientNotExist,
-    EESMRMessageNotExist,
-    EESMRInvalidCalMethod
-    };
-
-// ---------------------------------------------------------------------------
-// Panic wrapper method
-// ---------------------------------------------------------------------------
-//
-void Panic( TESMREMailManagerPanic aPanic )
-    {
-
-    User::Panic( KEMailManagerPanicTxt, aPanic );
-    }
-
-#endif // _DEBUG
-
-// ---------------------------------------------------------------------------
-// Leave wrapper method
-// ---------------------------------------------------------------------------
-//
-inline void DoLeaveIfErrorL( TInt aLeaveCode )
-    {
-    if ( KErrNone != aLeaveCode )
-        {
-
-        User::Leave( aLeaveCode );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Cleanup operation for RPointerArray.
-// @param aArray Pointer to RPointerArray.
-// ---------------------------------------------------------------------------
-//
-void MailboxPointerArrayCleanup( TAny* aArray )
-    {
-    RPointerArray<CFSMailBox>* entryArray =
-        static_cast<RPointerArray<CFSMailBox>*>( aArray );
-
-    entryArray->ResetAndDestroy();
-    entryArray->Close();
-    }
-} // namespace
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::CESMRFSEMailManager
-// ---------------------------------------------------------------------------
-//
-inline CESMRFSEMailManager::CESMRFSEMailManager(
-        CMRMailboxUtils& aMRMailboxUtils )
-:   iMRMailboxUtils( aMRMailboxUtils )
-    {
-    FUNC_LOG;
-    //do nothing
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::§CESMRFSEMailManager
-// ---------------------------------------------------------------------------
-//
-CESMRFSEMailManager::~CESMRFSEMailManager()
-    {
-    FUNC_LOG;
-    delete iParentPart;
-    delete iMessage;
-    delete iMailBox;
-    if ( iMailClient )
-        {
-        iMailClient->Close();
-        iMailClient = NULL;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::NewL
-// ---------------------------------------------------------------------------
-//
-CESMRFSEMailManager* CESMRFSEMailManager::NewL(
-        CMRMailboxUtils& aMRMailboxUtils  )
-    {
-    FUNC_LOG;
-
-    CESMRFSEMailManager* self =
-        new (ELeave) CESMRFSEMailManager(aMRMailboxUtils);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-
-
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::ConstructL()
-    {
-    FUNC_LOG;
-    //do nothing
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::PrepareForSendingL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::PrepareForSendingL(
-        const TDesC& aMailboxOwnerAddr )
-    {
-    FUNC_LOG;
-
-    iMailClient = CFSMailClient::NewL();
-
-    TPtrC emailAddr(
-            ESMRHelper::AddressWithoutMailtoPrefix( aMailboxOwnerAddr ) );
-
-    iMailBox = SelectMailBoxL( emailAddr );
-    iMessage = CreateMessageL();
-    iParentPart = CreateParentPartL();
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::PrepareForSendingreplyL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::PrepareForSendingReplyL(
-        const TDesC& aMailboxOwnerAddr, const TFSMailMsgId& aMsgId, TBool aReplyAll )
-    {
-    FUNC_LOG;
-
-    iMailClient = CFSMailClient::NewL();
-
-    TPtrC emailAddr(
-            ESMRHelper::AddressWithoutMailtoPrefix( aMailboxOwnerAddr ) );
-
-    iMailBox = SelectMailBoxL( emailAddr );
-
-    iMessage = iMailBox->CreateReplyMessage(aMsgId, aReplyAll );
-
-    iParentPart = CreateParentPartL();
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::SetSenderL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::SetSenderL(
-        const TDesC& aAddress,
-        const TDesC& aCommonName )
-    {
-    FUNC_LOG;
-
-    CFSMailAddress* sender = CFSMailAddress::NewLC();
-
-    TPtrC emailAddr(
-            ESMRHelper::AddressWithoutMailtoPrefix( aAddress ) );
-
-    sender->SetEmailAddress( emailAddr );
-    sender->SetDisplayName( aCommonName );
-    iMessage->SetSender( sender ); // takes ownership
-    CleanupStack::Pop( sender );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::SetReplyToAddressL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::SetReplyToAddressL(
-        const TDesC& aAddress,
-        const TDesC& aCommonName )
-    {
-    FUNC_LOG;
-
-    CFSMailAddress* replyToAddress = CFSMailAddress::NewLC();
-
-    TPtrC emailAddr(
-            ESMRHelper::AddressWithoutMailtoPrefix( aAddress ) );
-
-    replyToAddress->SetEmailAddress( emailAddr );
-    replyToAddress->SetDisplayName( aCommonName );
-    iMessage->SetReplyToAddress( replyToAddress ); // takes ownership
-    CleanupStack::Pop( replyToAddress );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::AppendToRecipientL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::AppendToRecipientL(
-        const TDesC& aAddress,
-        const TDesC& aCommonName )
-    {
-    FUNC_LOG;
-
-    CFSMailAddress* toRecipient = CFSMailAddress::NewLC();
-
-    TPtrC emailAddr(
-            ESMRHelper::AddressWithoutMailtoPrefix( aAddress ) );
-
-    toRecipient->SetEmailAddress( emailAddr );
-    toRecipient->SetDisplayName( aCommonName );
-    iMessage->AppendToRecipient( toRecipient ); // takes ownership
-    CleanupStack::Pop( toRecipient );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::AppendCCRecipientL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::AppendCCRecipientL(
-        const TDesC& aAddress,
-        const TDesC& aCommonName )
-    {
-    FUNC_LOG;
-
-    CFSMailAddress* ccRecipient = CFSMailAddress::NewLC();
-
-    TPtrC emailAddr(
-            ESMRHelper::AddressWithoutMailtoPrefix( aAddress ) );
-
-    ccRecipient->SetEmailAddress( emailAddr );
-    ccRecipient->SetDisplayName( aCommonName );
-    iMessage->AppendCCRecipient( ccRecipient ); // takes ownership
-    CleanupStack::Pop( ccRecipient );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::SetSubjectL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::SetSubjectL(const TDesC& aSubject)
-    {
-    FUNC_LOG;
-
-    iMessage->SetSubject( aSubject );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::CreateTextPlainPartL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::CreateTextPlainPartL(const TDesC& aPlainText)
-    {
-    FUNC_LOG;
-
-    AddPlainTextPartL( aPlainText );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::CreateTextCalendarPartL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::CreateTextCalendarPartL(
-        TESMRMethod aCalendarMethod )
-    {
-    FUNC_LOG;
-    //<cmail> removing hardcoded paths
-    TFileName fileName(KTempFileName);
-    User::LeaveIfError(ESMRHelper::CreateAndAppendPrivateDirToFileName(fileName));
-    CreateTextCalendarPartL( aCalendarMethod, fileName );
-    //</cmail>
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::CreateTextCalendarPartL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::CreateTextCalendarPartL(
-        TESMRMethod aCalendarMethod,
-        const TDesC& aFilename  )
-    {
-    FUNC_LOG;
-
-    TPtrC contentType;
-    switch ( aCalendarMethod )
-        {
-        case EESMRMethodRequest:
-            {
-            contentType.Set(KMimeTextCalRequest());
-            }
-            break;
-
-        case EESMRMethodResponse:
-            {
-            contentType.Set(KMimeTextCalResponse());
-            }
-            break;
-
-        case EESMRMethodCancel:
-            {
-            contentType.Set(KMimeTextCalCancel());
-            }
-            break;
-
-        default:
-            __ASSERT_DEBUG( EFalse, Panic(EESMRInvalidCalMethod) );
-        }
-
-    AddMessagePartFromFileL(
-            contentType,
-            KMimeTextCalContentClass,
-            KNullDesC(),
-            KNullDesC(),
-            aFilename );
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::SetAttachmentL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::SetAttachmentL(const TDesC& aAttachmentFile )
-    {
-    FUNC_LOG;
-
-    TFSMailMsgId nullId;
-    CFSMailMessagePart* attachmentPart =
-        iMessage->AddNewAttachmentL(aAttachmentFile, nullId );
-    CleanupStack::PushL( attachmentPart );
-    attachmentPart->SaveL();
-    iMessage->SaveMessageL();
-
-    CleanupStack::PopAndDestroy( attachmentPart );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::StoreMessageL
-// ---------------------------------------------------------------------------
-//
-TInt CESMRFSEMailManager::StoreMessageToDraftsFolderL()
-    {
-    FUNC_LOG;
-    // Stores message automatically to drafts folder
-    // check that msg is not in drafts folder already
-    TFSMailMsgId draftsFolderId =
-            iMailBox->GetStandardFolderId( EFSDraftsFolder );
-    TFSMailMsgId msgFolderId = iMessage->GetFolderId();
-    if ( draftsFolderId != msgFolderId )
-        {
-        RArray<TFSMailMsgId> ids;
-        CleanupClosePushL( ids );
-        ids.Append( iMessage->GetMessageId() );
-        iMailBox->MoveMessagesL( ids, msgFolderId, draftsFolderId );
-        CleanupStack::PopAndDestroy(); // ids
-        }
-
-    iMessage->SaveMessageL();
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::SendMessageL
-// ---------------------------------------------------------------------------
-//
-TInt CESMRFSEMailManager::SendMessageL()
-    {
-    FUNC_LOG;
-
-    TRAPD( ret, iMailBox->SendMessageL( *iMessage ) );
-
-
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::MailboxId
-// ---------------------------------------------------------------------------
-//
-TFSMailMsgId CESMRFSEMailManager::MailboxId() const
-    {
-    FUNC_LOG;
-    return iMailBox->GetId();
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::SendMailViaSyncL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::SendMailViaSyncL(
-        TESMRInputParams& aParams,
-        MMRInfoObject& aInfoObject,
-        MMRInfoProcessor::TMRInfoResponseMode aResponseMode,
-        const TDesC& aFreeResponseText )
-    {
-    FUNC_LOG;
-
-    CFSMailBox* mailBox =
-        aParams.iMailClient->GetMailBoxByUidL(
-                aParams.iMailMessage->GetMailBoxId() );
-    CleanupStack::PushL( mailBox );
-
-    if ( mailBox->IsMRInfoProcessorSet() )
-        {
-        MMRInfoProcessor& infoProcessor(
-                mailBox->MRInfoProcessorL() );
-
-
-        TRAPD(err, {
-                infoProcessor.ReplyToMeetingRequestL(
-                            aParams.iMailMessage->GetMailBoxId(),
-                            aParams.iMailMessage->GetMessageId(),
-                            aInfoObject,
-                            aResponseMode,
-                            aFreeResponseText );
-                    } );
-
-
-
-        User::LeaveIfError( err );
-        }
-
-    CleanupStack::PopAndDestroy( mailBox );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::MessageId
-// ---------------------------------------------------------------------------
-//
-TFSMailMsgId CESMRFSEMailManager::MessageId() const
-    {
-    FUNC_LOG;
-    __ASSERT_DEBUG( iMessage, Panic(EESMRMessageNotExist) );
-    return iMessage->GetMessageId();
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::MessageFolderId
-// ---------------------------------------------------------------------------
-//
-TFSMailMsgId CESMRFSEMailManager::MessageFolderId() const
-    {
-    FUNC_LOG;
-    __ASSERT_DEBUG( iMessage, Panic(EESMRMessageNotExist) );
-    return iMessage->GetFolderId();
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::CreateMessageL
-// ---------------------------------------------------------------------------
-//
-CFSMailMessage* CESMRFSEMailManager::CreateMessageL()
-    {
-    FUNC_LOG;
-
-    CFSMailMessage* msg = iMailBox->CreateMessageToSend();
-
-    msg->SetFlag( EFSMsgFlag_CalendarMsg );
-    msg->SaveMessageL();
-
-    return msg;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::CreateParentPartL
-// ---------------------------------------------------------------------------
-//
-CFSMailMessagePart* CESMRFSEMailManager::CreateParentPartL()
-    {
-    FUNC_LOG;
-    __ASSERT_DEBUG( iMessage, Panic(EESMRMessageNotExist) );
-
-    CFSMailMessagePart* parent = NULL;
-    RPointerArray<CFSMailMessagePart> messageParts;
-    CleanupStack::PushL(
-            TCleanupItem(
-                MessagePartPointerArrayCleanup,
-                &messageParts    ) );
-
-    iMessage->ChildPartsL( messageParts );
-
-    if( messageParts.Count() )
-        {
-        parent = messageParts[ KFirstIndex ];
-        messageParts.Remove( KFirstIndex );
-        }
-    else
-        {
-        // Message does not contain body part --> Create it
-        TFSMailMsgId id;
-        parent = iMessage->NewChildPartL(
-                        id,
-                        KFSMailContentTypeMultipartAlternative );
-        }
-
-    CleanupStack::PopAndDestroy(); // messageParts
-    CleanupStack::PushL( parent );
-
-    parent->SetContentType( KFSMailContentTypeMultipartAlternative );
-    parent->SaveL();
-    iMessage->SaveMessageL();
-
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::SelectMailBoxL
-// ---------------------------------------------------------------------------
-//
-CFSMailBox* CESMRFSEMailManager::SelectMailBoxL(
-        const TDesC& aMailboxOwnerAddr )
-    {
-    FUNC_LOG;
-
-    __ASSERT_DEBUG( iMailClient, Panic(EESMRMailClientNotExist) );
-
-    CFSMailBox* mailbox = NULL;
-
-    // Loop throug all mailboxes in this plug-in
-    RPointerArray<CFSMailBox> mailboxes;
-    CleanupStack::PushL(
-            TCleanupItem(
-                    MailboxPointerArrayCleanup,
-                    &mailboxes    ) );
-
-    // With null uid we get all mailboxes
-    TFSMailMsgId msgId;
-    iMailClient->ListMailBoxes(
-            msgId, mailboxes );
-
-    TInt mailboxCount( mailboxes.Count() );
-    for (TInt j(0); j < mailboxCount && !mailbox; ++j )
-        {
-        TPtrC mailboxOwnerAddName(
-                mailboxes[j]->OwnMailAddress().GetEmailAddress() );
-        if ( KEqualEmailAddress == mailboxOwnerAddName.CompareF(aMailboxOwnerAddr) )
-            {
-            // Correct mailbox is found
-            mailbox = mailboxes[j];
-            mailboxes.Remove(j);
-            }
-        }
-    CleanupStack::PopAndDestroy( &mailboxes );
-
-    __ASSERT_DEBUG( mailbox, Panic(EESMRMailboxNotFound) );
-
-    if ( !mailbox )
-        {
-        DoLeaveIfErrorL( KErrNotFound );
-        }
-
-
-    return mailbox;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::AddMessagePartFromFileL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::AddMessagePartFromFileL(
-        const TDesC& aContentType,
-        const TDesC& aContentClass,
-        const TDesC& aContentDescription,
-        const TDesC& aContentDisposition,
-        const TDesC& aFileAndPath )
-    {
-    FUNC_LOG;
-
-    __ASSERT_DEBUG( iParentPart, Panic(EESMRMessageNotExist) );
-
-    TFSMailMsgId nullId;
-
-    CFSMailMessagePart* messagePart =
-        iParentPart->AddNewAttachmentL(
-                aFileAndPath,
-                nullId,
-                aContentType );
-
-    CleanupStack::PushL( messagePart );
-
-    messagePart->SetMailBoxId( iMailBox->GetId() );
-    messagePart->SetContentDescription( KNullDesC() );
-    messagePart->SetContentType( KNullDesC() );
-    messagePart->SetContentDisposition( KNullDesC() );
-    messagePart->SetContentClass( KNullDesC() );
-
-    if ( aContentType.Length() )
-        {
-        messagePart->SetContentType( aContentType );
-        }
-
-    if ( aContentDescription.Length() )
-        {
-        messagePart->SetContentDescription( aContentDescription );
-        }
-
-    if ( aContentDisposition.Length() )
-        {
-        messagePart->SetContentDisposition( aContentDisposition );
-        }
-
-    if ( aContentClass.Length() )
-        {
-        messagePart->SetContentClass( aContentClass );
-        }
-
-    messagePart->SaveL();
-    iMessage->SaveMessageL();
-
-    CleanupStack::PopAndDestroy( messagePart );
-
-    }
-// ---------------------------------------------------------------------------
-// CESMRFSEMailManager::AddPlainTextPartL
-// ---------------------------------------------------------------------------
-//
-void CESMRFSEMailManager::AddPlainTextPartL(
-        const TDesC& aContent )
-    {
-    FUNC_LOG;
-    TFSMailMsgId id;
-    CFSMailMessagePart* plainTextPart =
-        iParentPart->FindBodyPartL(KFSMailContentTypeTextPlain);
-
-    if ( !plainTextPart )
-        {
-        // text/plain part does not exist --> Create it to body part
-        plainTextPart =
-            iParentPart->NewChildPartL(id,  KFSMailContentTypeTextPlain );
-        }
-
-    CleanupStack::PushL( plainTextPart );
-
-    plainTextPart->SetMailBoxId( iMailBox->GetId() );
-
-    TUint currentContentSize = plainTextPart->ContentSize();
-    TUint contentBufferSize  = currentContentSize + aContent.Length();
-
-    // Buffer for current content
-    HBufC* currentContentBuffer = HBufC::NewLC( currentContentSize );
-    TPtr currentContent( currentContentBuffer->Des() );
-
-    // Buffer for content containing calendar information and current content
-    HBufC* contentBuffer = HBufC::NewLC( contentBufferSize );
-    TPtr content( contentBuffer->Des() );
-
-    // Appending calendar information to content
-    content.Copy( aContent );
-    if ( currentContentSize )
-        {
-        // Appending current content if needed
-        plainTextPart->GetContentToBufferL( currentContent, 0 );
-        content.Append( currentContent );
-        }
-
-    plainTextPart->SetContent(content);
-    CleanupStack::PopAndDestroy( contentBuffer ); contentBuffer = NULL;
-    CleanupStack::PopAndDestroy( currentContentBuffer ); currentContentBuffer = NULL;
-
-    plainTextPart->SaveL();
-    iMessage->SaveMessageL();
-
-    CleanupStack::PopAndDestroy( plainTextPart );
-
-    }
-
-// EOF
-