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
@@ -149,5 +149,4 @@ void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*m
size_t len;
clistiter * cur = 0;
- QString b;
RecPartP part = new RecPart();
@@ -160,7 +159,9 @@ void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*m
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();
@@ -168,9 +169,10 @@ void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*m
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;
@@ -178,5 +180,5 @@ void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*m
target->setDescription(part);
} else {
- bodyCache[b]=new encodedString(data,len);
+ bodyCache[part->Identifier()]=new encodedString(data,len);
target->addPart(part);
}
@@ -215,9 +217,8 @@ void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*m
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);
}