LOCAL_C TMsvId CreateNewPlaintextMessageWithIncompleteAttachmentL() { TMsvEmailTypeList msvEmailTypeList = 0; TMsvPartList partList = 0; CTestActive* testActive = new (ELeave) CTestActive(); CleanupStack::PushL(testActive); partList = (KMsvMessagePartBody | KMsvMessagePartAttachments); CImEmailOperation* emailOperation = CImEmailOperation::CreateNewL(testActive->iStatus, *(testUtils->iMsvSession), KMsvGlobalInBoxIndexEntryId, partList, msvEmailTypeList, KUidMsgTypeSMTP); CleanupStack::PushL(emailOperation); testActive->StartL(); CActiveScheduler::Start(); if (testActive->iStatus.Int()) { testUtils->WriteComment(_L("CreateNewPlaintextMessageWithIncompleteAttachmentL failed")); testUtils->TestHarnessFailed(testActive->iStatus.Int()); } //check progress TMsvId temp; TPckgC<TMsvId> paramPack(temp); const TDesC8& progBuf1 = emailOperation->ProgressL(); paramPack.Set(progBuf1); TMsvId messageId = paramPack(); CleanupStack::PopAndDestroy(2); // testActive, emailOperation // // Add an attachment // testActive = new (ELeave) CTestActive(); CleanupStack::PushL(testActive); _LIT(KAttachment1, "C:\\mailtest\\IMCM\\rfc82201.txt"); _LIT(KAttachment2, "C:\\mailtest\\IMCM\\rfc82202.txt"); CImEmailMessage* imEmailMessage = CImEmailMessage::NewLC(*(testUtils->iMsvEntry)); testUtils->iMsvEntry->SetEntryL(messageId); CMsvAttachment* attachmentInfo = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); CleanupStack::PushL(attachmentInfo); imEmailMessage->AttachmentManager().AddAttachmentL(KAttachment1, attachmentInfo, testActive->iStatus); CleanupStack::Pop(attachmentInfo); testActive->StartL(); CActiveScheduler::Start(); // wait for the asynch operation to complete if (testActive->iStatus.Int()) { testUtils->WriteComment(_L("CreateNewPlaintextMessageWithIncompleteAttachmentL failed")); testUtils->TestHarnessFailed(testActive->iStatus.Int()); } testUtils->iMsvEntry->SetEntryL(messageId); attachmentInfo = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); CleanupStack::PushL(attachmentInfo); imEmailMessage->AttachmentManager().AddAttachmentL(KAttachment2, attachmentInfo, testActive->iStatus); CleanupStack::Pop(attachmentInfo); testActive->StartL(); CActiveScheduler::Start(); // wait for the asynch operation to complete if (testActive->iStatus.Int()) { testUtils->WriteComment(_L("CreateNewPlaintextMessageWithIncompleteAttachmentL failed")); testUtils->TestHarnessFailed(testActive->iStatus.Int()); } const TDesC8& progBuf2 = imEmailMessage->ProgressL(); paramPack.Set(progBuf2); TMsvId attachmentId = paramPack(); CleanupStack::PopAndDestroy(2); // imEmailMessage, testActive // // Set the attachment to be not complete // testUtils->iMsvEntry->SetEntryL(attachmentId); TMsvEmailEntry attachmentEntry = testUtils->iMsvEntry->Entry(); attachmentEntry.SetComplete(EFalse); testUtils->iMsvEntry->ChangeL(attachmentEntry); return messageId; }
LOCAL_C void CreateNewPlaintextMessageL() { CTestActive* testActive = new(ELeave) CTestActive(); CleanupStack::PushL(testActive); TMsvEmailTypeList msvEmailTypeList = 0; TMsvPartList partList = (KMsvMessagePartBody | KMsvMessagePartAttachments); CImEmailOperation* emailOperation = CImEmailOperation::CreateNewL(testActive->iStatus, *(testUtils->iMsvSession),KMsvGlobalOutBoxIndexEntryId, partList, msvEmailTypeList, KUidMsgTypeSMTP); CleanupStack::PushL(emailOperation); TestMsvOperationTimer* testMsvOperationTimer = TestMsvOperationTimer::NewLC(test.Console(), emailOperation, test); testActive->StartL(); testMsvOperationTimer->IssueRequest(); CActiveScheduler::Start(); //check progress TMsvId temp; TPckgC<TMsvId> paramPack(temp); const TDesC8& progBuf = emailOperation->ProgressL(); paramPack.Set(progBuf); TMsvId newMessageId; newMessageId = paramPack(); test(newMessageId != NULL); CImEmailMessage* imEmailMessage = CImEmailMessage::NewLC(*(testUtils->iMsvEntry)); // Make sure you are set on the Message Id testUtils->iMsvEntry->SetEntryL(newMessageId); CMsvAttachment* attachmentInfo = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); CleanupStack::PushL(attachmentInfo); attachmentInfo->SetAttachmentNameL(KAttachmentFileName1()); CleanupStack::Pop(attachmentInfo); // ownership passed to attachment manager imEmailMessage->AttachmentManager().AddAttachmentL(KAttachment1, attachmentInfo, testActive->iStatus); testActive->StartL(); CActiveScheduler::Start(); // wait for the asynch operation to complete if (testActive->iStatus.Int()) { testUtils->WriteComment(_L("CreateNewPlaintextMessageWithIncompleteAttachmentL failed")); testUtils->TestHarnessFailed(testActive->iStatus.Int()); } testUtils->iMsvEntry->SetEntryL(newMessageId); CMsvAttachment* attachmentInfo1 = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); CleanupStack::PushL(attachmentInfo1); attachmentInfo1->SetAttachmentNameL(KAttachmentFileName2()); CleanupStack::Pop(attachmentInfo1); // ownership passed to attachment manager imEmailMessage->AttachmentManager().AddAttachmentL(KAttachment2, attachmentInfo1, testActive->iStatus); testActive->StartL(); CActiveScheduler::Start(); // wait for the asynch operation to complete if (testActive->iStatus.Int()) { testUtils->WriteComment(_L("CreateNewPlaintextMessageWithIncompleteAttachmentL failed")); testUtils->TestHarnessFailed(testActive->iStatus.Int()); } testUtils->iMsvEntry->SetEntryL(newMessageId); CMsvAttachment* attachmentInfo2 = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); CleanupStack::PushL(attachmentInfo2); attachmentInfo2->SetAttachmentNameL(KAttachmentFileName3()); CleanupStack::Pop(attachmentInfo2); // ownership passed to attachment manager imEmailMessage->AttachmentManager().AddAttachmentL(KAttachment3, attachmentInfo2, testActive->iStatus); testActive->StartL(); CActiveScheduler::Start(); // wait for the asynch operation to complete if (testActive->iStatus.Int()) { testUtils->WriteComment(_L("CreateNewPlaintextMessageWithIncompleteAttachmentL failed")); testUtils->TestHarnessFailed(testActive->iStatus.Int()); } const TDesC8& progBuf2 = imEmailMessage->ProgressL(); paramPack.Set(progBuf2); TMsvId attachmentId = paramPack(); testUtils->WriteComment(_L("\t Created New plaintext message")); testUtils->iMsvEntry->SetEntryL(attachmentId); imEmailMessage->GetAttachmentsListL(testActive->iStatus, newMessageId, CImEmailMessage::EAllAttachments, CImEmailMessage::EThisMessageOnly); testActive->StartL(); CActiveScheduler::Start(); // wait for the asynch operation to complete const CMsvEntrySelection& selection = imEmailMessage->Selection(); testUtils->Printf(KTotalNoOfAttachment , selection.Count()); imEmailMessage->GetBodyTextEntryIdL(testActive->iStatus,newMessageId,CImEmailMessage::EThisMessageOnly); testActive->StartL(); CActiveScheduler::Start(); // wait for the asynch operation to complete const CMsvEntrySelection& selection1 = imEmailMessage->Selection(); TInt count = imEmailMessage->Selection().Count(); if( count > 0) { // Get the Id of the body text // The body text part Id is present at index 0. Not checking for other // Ids, as currently only Plain text part is verified. TMsvId iBodyTextId = imEmailMessage->Selection().At(0); testUtils->Printf(KBodytextId, iBodyTextId); } CleanupStack::PopAndDestroy(); // imEmailMessage testUtils->iMsvEntry->SetEntryL(attachmentId); CMsvStore* store1 = testUtils->iMsvEntry->EditStoreL(); CleanupStack::PushL(store1); CImMimeHeader *Head1 = CImMimeHeader::NewLC(); Head1->RestoreL(*store1); const TPtrC8 contentSubType = Head1->ContentSubType(); store1->CommitL(); if(contentSubType.Size() == 0 ) { testUtils->Printf(_L("ContentSubType Has NO SUB CONTENT****") ); test(contentSubType.Size() != 0); } else { testUtils->Printf(_L("ContentSubType Has ****SUB CONTENT****")); } CleanupStack::PopAndDestroy(2, store1);//store1,Head1,Buffer testUtils->iMsvEntry->SetEntryL(newMessageId); CMsvStore* store = testUtils->iMsvEntry->EditStoreL(); CleanupStack::PushL(store); CImHeader* header = CImHeader::NewLC(); header->RestoreL(*store); TInt serverLength = testUtils->MachineName().Length(); HBufC* serverad = HBufC::NewL(serverLength + 7 ); // 7 is the length of KServerAddress CleanupStack::PushL(serverad); serverad->Des().Copy(testUtils->MachineName()); serverad->Des().Append(KServer); HBufC* emailaddress = HBufC::NewL(serverLength + 8 + serverad->Des().Length() + 1 ); CleanupStack::PushL(emailaddress); emailaddress->Des().Copy(testUtils->MachineName()); emailaddress->Des().Append(KAt); emailaddress->Des().Append(*serverad); header->ToRecipients().AppendL(*emailaddress); header->SetSubjectL(_L("Test sending message using CMsvEntry::CopyL!!")); header->StoreL(*store); store->CommitL(); CleanupStack::PopAndDestroy(emailaddress); CleanupStack::PopAndDestroy(serverad); CleanupStack::PopAndDestroy(5,testActive); // header,store,testMsvOperationTimer,emailOperation,testActive }