summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
index 0ac842d..6fcc701 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
@@ -143,46 +143,48 @@ void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*m
}
if (!message || !mime) {
return;
}
int r;
char*data = 0;
size_t len;
clistiter * cur = 0;
- QString b;
RecPartP part = new RecPart();
switch (mime->mm_type) {
case MAILMIME_SINGLE:
{
QValueList<int>countlist = recList;
countlist.append(current_count);
r = mailmessage_fetch_section(message,mime,&data,&len);
part->setSize(len);
part->setPositionlist(countlist);
- b = gen_attachment_id();
- part->setIdentifier(b);
fillSingleBody(part,message,mime);
+ if (part->Identifier().isEmpty()) {
+ part->setIdentifier(gen_attachment_id());
+ }
+
if (part->Type()=="text" && target->Bodytext().isNull()) {
encodedString*rs = new encodedString();
rs->setContent(data,len);
encodedString*res = decode_String(rs,part->Encoding());
if (countlist.count()>2) {
- bodyCache[b]=rs;
+ bodyCache[part->Identifier()]=rs;
target->addPart(part);
} else {
delete rs;
}
+ QString b;
b = QString(res->Content());
delete res;
target->setBodytext(b);
target->setDescription(part);
} else {
- bodyCache[b]=new encodedString(data,len);
+ bodyCache[part->Identifier()]=new encodedString(data,len);
target->addPart(part);
}
}
break;
case MAILMIME_MULTIPLE:
{
unsigned int ccount = 1;
mailmime*cbody=0;
@@ -209,21 +211,20 @@ void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*m
QValueList<int>countlist = recList;
countlist.append(current_count);
/* the own header is always at recursion 0 - we don't need that */
if (current_rec > 0) {
part->setPositionlist(countlist);
r = mailmessage_fetch_section(message,mime,&data,&len);
part->setSize(len);
part->setPositionlist(countlist);
- b = gen_attachment_id();
- part->setIdentifier(b);
+ part->setIdentifier(gen_attachment_id());
part->setType("message");
part->setSubtype("rfc822");
- bodyCache[b]=new encodedString(data,len);
+ bodyCache[part->Identifier()]=new encodedString(data,len);
target->addPart(part);
}
if (mime->mm_data.mm_message.mm_msg_mime != NULL) {
traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1);
}
}
break;
}