diff -r 000000000000 -r 8e480a14352b messagingfw/msgtestfw/TestActions/Email/Smtp/src/CMtfTestActionCreateSmtpMessageFromParamEmailFile.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtestfw/TestActions/Email/Smtp/src/CMtfTestActionCreateSmtpMessageFromParamEmailFile.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,161 @@ +// Copyright (c) 2004-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: +// __ACTION_INFO_BEGIN__ +// [Action Name] +// CreateSmtpMessageFromParamFile +// [Action Parameters] +// Session : Reference to the session. +// ServiceId : Value of the SMTP service id. +// FolderId : Value of the local folder id where the message will be created. +// mailInfo : Reference to a CPop3MailInfo object containing mail info +// MessageId : Value of the created SMTP message id. +// [Action Description] +// Creates a SMTP message on one of the local folders. +// [APIs Used] +// CMsvEntry::SetEntryL +// CMsvEntry::Entry +// TMsvId::Id +// CImCltRecvConvert::SetMsvId +// CImCltRecvConvert::ResetL +// CImCltRecvConvert::MessageCompleteL +// __ACTION_INFO_END__ +// +// + +/** + @file +*/ + +#include +#include + +#include "CMtfTestActionCreateSmtpMessageFromParamEmailFile.h" +#include "CMtfTestCase.h" +#include "CMtfTestActionParameters.h" +#include "CPop3MailInfo.h" +#include "ImCltCvRecv.h" + + +CMtfTestAction* CMtfTestActionCreateSmtpMessageFromParamEmailFile::NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters) + { + CMtfTestActionCreateSmtpMessageFromParamEmailFile* self = + new (ELeave) CMtfTestActionCreateSmtpMessageFromParamEmailFile(aTestCase); + CleanupStack::PushL(self); + self->ConstructL(aActionParameters); + CleanupStack::Pop(); + return self; + } + + +CMtfTestActionCreateSmtpMessageFromParamEmailFile::CMtfTestActionCreateSmtpMessageFromParamEmailFile(CMtfTestCase& aTestCase) + : CMtfSynchronousTestAction(aTestCase) + { + } + + +CMtfTestActionCreateSmtpMessageFromParamEmailFile::~CMtfTestActionCreateSmtpMessageFromParamEmailFile() + { + } + + +#include +#include +#include + + +TMsvId CMtfTestActionCreateSmtpMessageFromParamEmailFile::CreateAndSendMessageL( CPop3MailInfo &mailInfo ) + { + CSendAs* sendAs = CSendAs::NewL( *this ); + CleanupStack::PushL( sendAs ); + + sendAs->SetMtmL( KUidMsgTypeSMTP ); + sendAs->SetService(0); + sendAs->CreateMessageL(KMsvGlobalOutBoxIndexEntryId); + + + // these next 2 literals will come from mail info params eventually + _LIT( KRecipient, "matthewf@msexchange2k.closedtest.intra" ); + sendAs->AddRecipientL( KRecipient ); + + _LIT( KSubject, "test subject" ); + sendAs->SetSubjectL( KSubject ); + + //Create and read the file data int a CRichText object + TCharFormat charForm; + TCharFormatMask charFormatMask; + charFormatMask.SetAll(); + + CParaFormatLayer* paraFormat = CParaFormatLayer::NewL( ); + CleanupStack::PushL( paraFormat ); + CCharFormatLayer* charFormat = CCharFormatLayer::NewL( charForm, charFormatMask ); + CleanupStack::PushL( charFormat ); + CRichText* rText = CRichText::NewL( paraFormat, charFormat ); + CleanupStack::PushL( rText ); + +// + RFs fs; + fs.Connect(); + RFile file; + mailInfo.GetFileName(); + User::LeaveIfError( file.Open(fs, mailInfo.GetFileName(), EFileRead ) ); + + const TInt KLineLen = 1024; + TBuf8 line; + TBuf8<1> aChar; + TBool finished = FALSE; + TInt pos = 0; + + do + { + line.FillZ(); + line.SetLength(0); + do + { + file.Read(aChar, 1); + if(aChar.Length()) + line.Append(aChar); + else + finished = TRUE; + } while(aChar.Length() && aChar[0] != 0x0A); + if(!line.Length()) + break; + + TBuf line16; + line16.Copy( line ); + rText->InsertL( pos, line16 ); + pos += line16.Length(); + } while(!finished); + + sendAs->SetBodyL( *rText ); + sendAs->SaveMessageL(); + TMsvId entryId = sendAs->ClientMtm().Entry().EntryId(); + CleanupStack::PopAndDestroy( 4 ); // sendAs, paraFormat, charFormat, rText + return entryId; + } + +void CMtfTestActionCreateSmtpMessageFromParamEmailFile::ExecuteActionL() + { + + CMsvSession* paramSession = ObtainParameterReferenceL(TestCase(),ActionParameters().Parameter(0)); + TMsvId paramServiceId = ObtainValueParameterL(TestCase(),ActionParameters().Parameter(1)); + TMsvId paramFolderId = ObtainValueParameterL(TestCase(),ActionParameters().Parameter(2)); + + CPop3MailInfo* mailInfo = ObtainParameterReferenceL(TestCase(),ActionParameters().Parameter(3)); + + TMsvId paramMessageId = CreateAndSendMessageL( *mailInfo ); + + StoreParameterL(TestCase(),paramMessageId,ActionParameters().Parameter(4)); + TestCase().ActionCompletedL(*this); + } +