diff --git a/kmailicalifaceimpl.cpp b/kmailicalifaceimpl.cpp index 9aa45175e..fede52985 100644 --- a/kmailicalifaceimpl.cpp +++ b/kmailicalifaceimpl.cpp @@ -192,28 +192,24 @@ bool KMailICalIfaceImpl::updateAttachment( KMMessage& msg, file.close(); // create the new message part with data read from temp file - KMMessagePart *msgPart = new KMMessagePart; - msgPart->setName( fileName ); - msgPart->setPartSpecifier( fileName ); - if( url.fileEncoding().isEmpty() ){ - QValueList allowedCTEs; - msgPart->setBodyAndGuessCte( rawData, allowedCTEs ); - }else{ - msgPart->setContentTransferEncodingStr( "8bit" ); - msgPart->setCharset( url.fileEncoding().latin1() ); - msgPart->setBodyEncodedBinary( rawData ); - } - msgPart->setType(DwMime::kTypeApplication); - msgPart->setSubtype(DwMime::kSubtypeOctetStream); - msgPart->setContentDisposition( QString("attachment;\n\tfilename=\"%1\"") + KMMessagePart msgPart; + msgPart.setName( fileName ); + msgPart.setType(DwMime::kTypeText); + msgPart.setSubtype(DwMime::kSubtypePlain); + msgPart.setContentDisposition( QString("attachment;\n\tfilename=\"%1\"") .arg( fileName ).latin1() ); + QValueList dummy; + msgPart.setBodyAndGuessCte( rawData, dummy ); + if( !url.fileEncoding().isEmpty() ) + msgPart.setCharset( url.fileEncoding().latin1() ); + msgPart.setPartSpecifier( fileName ); // quickly searching for our message part: since Kolab parts are // top-level parts we do *not* have to travel into embedded multiparts DwBodyPart* part = msg.getFirstDwBodyPart(); while( part ){ if( fileName == part->partId() ){ - DwBodyPart* newPart = msg.createDWBodyPart( msgPart ); + DwBodyPart* newPart = msg.createDWBodyPart( &msgPart ); // Make sure the replacing body part is pointing // to the same next part as the original body part. newPart->SetNext( part->Next() ); @@ -230,7 +226,9 @@ bool KMailICalIfaceImpl::updateAttachment( KMMessage& msg, } if( !bOK ){ - msg.addBodyPart(msgPart); + kdDebug(5006) << "num: " << msg.numBodyParts() << endl; + msg.addBodyPart( &msgPart ); + kdDebug(5006) << "num: " << msg.numBodyParts() << endl; kdDebug(5006) << "Attachment added." << endl; bOK = true; } @@ -301,9 +299,12 @@ Q_UINT32 KMailICalIfaceImpl::addIncidence( KMFolder& folder, msg->initHeader(); msg->setType( DwMime::kTypeMultipart ); msg->setSubtype( DwMime::kSubtypeMixed ); - msg->setHeaderField( "Content-Type", "Multipart/Mixed" ); msg->setSubject( "[kolab data]" ); + msg->setCharset( "8bit" ); msg->setBody( "Your mailer can not display this format.\nSee http://www.kolab.org for details on the Kolab storage format." ); + msg->setNeedsAssembly(); + msg->setAutomaticFields( true ); + msg->cleanupHeader(); // Add all attachments by reading them from their temp. files for( QStringList::ConstIterator it = attachments.begin(); @@ -317,6 +318,9 @@ Q_UINT32 KMailICalIfaceImpl::addIncidence( KMFolder& folder, if( bAttachOK ){ // Mark the message as read and store it in the folder + msg->setNeedsAssembly(); + msg->setAutomaticFields( true ); + msg->cleanupHeader(); msg->touch(); if ( folder.addMsg( msg ) == 0 ) // Message stored