author | alwin <alwin> | 2003-12-16 02:13:09 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-16 02:13:09 (UTC) |
commit | f42c15f884d4377bc99d73e16fa1722b0fb2a4d3 (patch) (side-by-side diff) | |
tree | 0ecd625c8a5913285fa31a050a9a6e49c13fbe4b | |
parent | 32d48372f7b5ec9e4586ea74cc444838b157248e (diff) | |
download | opie-f42c15f884d4377bc99d73e16fa1722b0fb2a4d3.zip opie-f42c15f884d4377bc99d73e16fa1722b0fb2a4d3.tar.gz opie-f42c15f884d4377bc99d73e16fa1722b0fb2a4d3.tar.bz2 |
quoted-printable text will be decoded for display
-rw-r--r-- | noncore/net/mail/abstractmail.cpp | 21 | ||||
-rw-r--r-- | noncore/net/mail/abstractmail.h | 2 | ||||
-rw-r--r-- | noncore/net/mail/imapwrapper.cpp | 16 | ||||
-rw-r--r-- | noncore/net/mail/imapwrapper.h | 4 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.cpp | 21 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.h | 2 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.cpp | 16 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.h | 4 |
8 files changed, 74 insertions, 12 deletions
diff --git a/noncore/net/mail/abstractmail.cpp b/noncore/net/mail/abstractmail.cpp index 7380c31..0bb2525 100644 --- a/noncore/net/mail/abstractmail.cpp +++ b/noncore/net/mail/abstractmail.cpp @@ -4,2 +4,6 @@ +#include <qstring.h> +#include <stdlib.h> +#include <libetpan/mailmime_content.h> + AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) @@ -13 +17,18 @@ AbstractMail* AbstractMail::getWrapper(POP3account *a) } + +QString AbstractMail::decode_quoted_printable(const char*text) +{ + char*result_text; + size_t index = 0; + QString result = ""; + /* reset for recursive use! */ + size_t target_length = 0; + result_text = 0; + int err = mailmime_quoted_printable_body_parse(text,strlen(text), + &index,&result_text,&target_length,0); + if (result_text) { + result = result_text; + free(result_text); + } + return result; +} diff --git a/noncore/net/mail/abstractmail.h b/noncore/net/mail/abstractmail.h index 62e0715..4473ad2 100644 --- a/noncore/net/mail/abstractmail.h +++ b/noncore/net/mail/abstractmail.h @@ -28,4 +28,4 @@ public: static AbstractMail* getWrapper(POP3account *a); + static QString decode_quoted_printable(const char*text); }; - #endif 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 @@ -394,2 +394,5 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mai body_text = fetchPart(mail,path,true); + if (singlePart.Encoding()=="quoted-printable") { + body_text = decode_quoted_printable(body_text.latin1()); + } target_body.setBodytext(body_text); @@ -401,2 +404,5 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mai body_text = fetchPart(mail,path,true); + if (singlePart.Encoding()=="quoted-printable") { + body_text = decode_quoted_printable(body_text.latin1()); + } target_body.setBodytext(body_text); @@ -457,3 +463,3 @@ QStringList IMAPwrapper::address_list_to_stringlist(clist*list) -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) { @@ -509,3 +515,7 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,boo if (text) { + if (enc=="quoted-printable") { + body = decode_quoted_printable(text); + } else { body = QString(text); + } free(text); @@ -549,3 +559,3 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mai 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); @@ -707,3 +717,3 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) { - return fetchPart(mail,part.Positionlist(),false); + return fetchPart(mail,part.Positionlist(),false,part.Encoding()); } diff --git a/noncore/net/mail/imapwrapper.h b/noncore/net/mail/imapwrapper.h index 700d512..768a517 100644 --- a/noncore/net/mail/imapwrapper.h +++ b/noncore/net/mail/imapwrapper.h @@ -36,3 +36,3 @@ protected: - virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); + virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc=""); @@ -50,3 +50,3 @@ protected: -private: + IMAPaccount *account; diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp index 7380c31..0bb2525 100644 --- a/noncore/net/mail/libmailwrapper/abstractmail.cpp +++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp @@ -4,2 +4,6 @@ +#include <qstring.h> +#include <stdlib.h> +#include <libetpan/mailmime_content.h> + AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) @@ -13 +17,18 @@ AbstractMail* AbstractMail::getWrapper(POP3account *a) } + +QString AbstractMail::decode_quoted_printable(const char*text) +{ + char*result_text; + size_t index = 0; + QString result = ""; + /* reset for recursive use! */ + size_t target_length = 0; + result_text = 0; + int err = mailmime_quoted_printable_body_parse(text,strlen(text), + &index,&result_text,&target_length,0); + if (result_text) { + result = result_text; + free(result_text); + } + return result; +} diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h index 62e0715..4473ad2 100644 --- a/noncore/net/mail/libmailwrapper/abstractmail.h +++ b/noncore/net/mail/libmailwrapper/abstractmail.h @@ -28,4 +28,4 @@ public: static AbstractMail* getWrapper(POP3account *a); + static QString decode_quoted_printable(const char*text); }; - #endif diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp index ad95384..a4e6228 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp @@ -394,2 +394,5 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mai body_text = fetchPart(mail,path,true); + if (singlePart.Encoding()=="quoted-printable") { + body_text = decode_quoted_printable(body_text.latin1()); + } target_body.setBodytext(body_text); @@ -401,2 +404,5 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mai body_text = fetchPart(mail,path,true); + if (singlePart.Encoding()=="quoted-printable") { + body_text = decode_quoted_printable(body_text.latin1()); + } target_body.setBodytext(body_text); @@ -457,3 +463,3 @@ QStringList IMAPwrapper::address_list_to_stringlist(clist*list) -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) { @@ -509,3 +515,7 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,boo if (text) { + if (enc=="quoted-printable") { + body = decode_quoted_printable(text); + } else { body = QString(text); + } free(text); @@ -549,3 +559,3 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mai 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); @@ -707,3 +717,3 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) { - return fetchPart(mail,part.Positionlist(),false); + return fetchPart(mail,part.Positionlist(),false,part.Encoding()); } diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h index 700d512..768a517 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.h +++ b/noncore/net/mail/libmailwrapper/imapwrapper.h @@ -36,3 +36,3 @@ protected: - virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); + virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc=""); @@ -50,3 +50,3 @@ protected: -private: + IMAPaccount *account; |