Diffstat (limited to 'noncore/net/mail/imapwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/mail/imapwrapper.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp index ad95384..a4e6228 100644 --- a/noncore/net/mail/imapwrapper.cpp +++ b/noncore/net/mail/imapwrapper.cpp @@ -391,15 +391,21 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mai switch (mailDescription->bd_type) { case MAILIMAP_BODY_TYPE_1PART_MSG: path.append(1); body_text = fetchPart(mail,path,true); + if (singlePart.Encoding()=="quoted-printable") { + body_text = decode_quoted_printable(body_text.latin1()); + } target_body.setBodytext(body_text); target_body.setDescription(singlePart); break; case MAILIMAP_BODY_TYPE_1PART_TEXT: qDebug("Mediatype single: %s",mailDescription->bd_data.bd_type_text->bd_media_text); path.append(1); body_text = fetchPart(mail,path,true); + if (singlePart.Encoding()=="quoted-printable") { + body_text = decode_quoted_printable(body_text.latin1()); + } target_body.setBodytext(body_text); target_body.setDescription(singlePart); break; case MAILIMAP_BODY_TYPE_1PART_BASIC: @@ -454,9 +460,9 @@ QStringList IMAPwrapper::address_list_to_stringlist(clist*list) } return l; } -QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call) +QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call,const QString&enc) { QString body(""); const char*mb; int err; @@ -506,9 +512,13 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,boo if (msg_att_item->att_data.att_static->att_type == MAILIMAP_MSG_ATT_BODY_SECTION) { char*text = msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part; msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part = 0L; if (text) { - body = QString(text); + if (enc=="quoted-printable") { + body = decode_quoted_printable(text); + } else { + body = QString(text); + } free(text); } else { body = ""; } @@ -546,9 +556,9 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mai QValueList<int>clist = recList; clist.append(count); /* important: Check for is NULL 'cause a body can be empty! */ if (currentPart.Type()=="text" && target_body.Bodytext().isNull() ) { - QString body_text = fetchPart(mail,clist,true); + QString body_text = fetchPart(mail,clist,true,currentPart.Encoding()); target_body.setDescription(currentPart); target_body.setBodytext(body_text); } else { QString id(""); @@ -704,9 +714,9 @@ void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which) } QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) { - return fetchPart(mail,part.Positionlist(),false); + return fetchPart(mail,part.Positionlist(),false,part.Encoding()); } void IMAPwrapper::deleteMail(const RecMail&mail) { |