author | alwin <alwin> | 2003-12-16 02:13:09 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-16 02:13:09 (UTC) |
commit | f42c15f884d4377bc99d73e16fa1722b0fb2a4d3 (patch) (unidiff) | |
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 | 4 | ||||
-rw-r--r-- | noncore/net/mail/imapwrapper.cpp | 18 | ||||
-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 | 4 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.cpp | 18 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.h | 4 |
8 files changed, 78 insertions, 16 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 @@ | |||
4 | 4 | ||
5 | #include <qstring.h> | ||
6 | #include <stdlib.h> | ||
7 | #include <libetpan/mailmime_content.h> | ||
8 | |||
5 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) | 9 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) |
@@ -13 +17,18 @@ AbstractMail* AbstractMail::getWrapper(POP3account *a) | |||
13 | } | 17 | } |
18 | |||
19 | QString AbstractMail::decode_quoted_printable(const char*text) | ||
20 | { | ||
21 | char*result_text; | ||
22 | size_t index = 0; | ||
23 | QString result = ""; | ||
24 | /* reset for recursive use! */ | ||
25 | size_t target_length = 0; | ||
26 | result_text = 0; | ||
27 | int err = mailmime_quoted_printable_body_parse(text,strlen(text), | ||
28 | &index,&result_text,&target_length,0); | ||
29 | if (result_text) { | ||
30 | result = result_text; | ||
31 | free(result_text); | ||
32 | } | ||
33 | return result; | ||
34 | } | ||
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 | |||
@@ -25,7 +25,7 @@ public: | |||
25 | virtual void answeredMail(const RecMail&mail)=0; | 25 | virtual void answeredMail(const RecMail&mail)=0; |
26 | 26 | ||
27 | static AbstractMail* getWrapper(IMAPaccount *a); | 27 | static AbstractMail* getWrapper(IMAPaccount *a); |
28 | static AbstractMail* getWrapper(POP3account *a); | 28 | static AbstractMail* getWrapper(POP3account *a); |
29 | static QString decode_quoted_printable(const char*text); | ||
29 | }; | 30 | }; |
30 | |||
31 | #endif | 31 | #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 | |||
394 | body_text = fetchPart(mail,path,true); | 394 | body_text = fetchPart(mail,path,true); |
395 | if (singlePart.Encoding()=="quoted-printable") { | ||
396 | body_text = decode_quoted_printable(body_text.latin1()); | ||
397 | } | ||
395 | target_body.setBodytext(body_text); | 398 | target_body.setBodytext(body_text); |
@@ -401,2 +404,5 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mai | |||
401 | body_text = fetchPart(mail,path,true); | 404 | body_text = fetchPart(mail,path,true); |
405 | if (singlePart.Encoding()=="quoted-printable") { | ||
406 | body_text = decode_quoted_printable(body_text.latin1()); | ||
407 | } | ||
402 | target_body.setBodytext(body_text); | 408 | target_body.setBodytext(body_text); |
@@ -457,3 +463,3 @@ QStringList IMAPwrapper::address_list_to_stringlist(clist*list) | |||
457 | 463 | ||
458 | QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call) | 464 | QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call,const QString&enc) |
459 | { | 465 | { |
@@ -509,3 +515,7 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,boo | |||
509 | if (text) { | 515 | if (text) { |
510 | body = QString(text); | 516 | if (enc=="quoted-printable") { |
517 | body = decode_quoted_printable(text); | ||
518 | } else { | ||
519 | body = QString(text); | ||
520 | } | ||
511 | free(text); | 521 | free(text); |
@@ -549,3 +559,3 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mai | |||
549 | if (currentPart.Type()=="text" && target_body.Bodytext().isNull() ) { | 559 | if (currentPart.Type()=="text" && target_body.Bodytext().isNull() ) { |
550 | QString body_text = fetchPart(mail,clist,true); | 560 | QString body_text = fetchPart(mail,clist,true,currentPart.Encoding()); |
551 | target_body.setDescription(currentPart); | 561 | target_body.setDescription(currentPart); |
@@ -707,3 +717,3 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) | |||
707 | { | 717 | { |
708 | return fetchPart(mail,part.Positionlist(),false); | 718 | return fetchPart(mail,part.Positionlist(),false,part.Encoding()); |
709 | } | 719 | } |
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: | |||
36 | 36 | ||
37 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); | 37 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc=""); |
38 | 38 | ||
@@ -50,3 +50,3 @@ protected: | |||
50 | 50 | ||
51 | private: | 51 | |
52 | IMAPaccount *account; | 52 | 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 @@ | |||
4 | 4 | ||
5 | #include <qstring.h> | ||
6 | #include <stdlib.h> | ||
7 | #include <libetpan/mailmime_content.h> | ||
8 | |||
5 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) | 9 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) |
@@ -13 +17,18 @@ AbstractMail* AbstractMail::getWrapper(POP3account *a) | |||
13 | } | 17 | } |
18 | |||
19 | QString AbstractMail::decode_quoted_printable(const char*text) | ||
20 | { | ||
21 | char*result_text; | ||
22 | size_t index = 0; | ||
23 | QString result = ""; | ||
24 | /* reset for recursive use! */ | ||
25 | size_t target_length = 0; | ||
26 | result_text = 0; | ||
27 | int err = mailmime_quoted_printable_body_parse(text,strlen(text), | ||
28 | &index,&result_text,&target_length,0); | ||
29 | if (result_text) { | ||
30 | result = result_text; | ||
31 | free(result_text); | ||
32 | } | ||
33 | return result; | ||
34 | } | ||
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 | |||
@@ -25,7 +25,7 @@ public: | |||
25 | virtual void answeredMail(const RecMail&mail)=0; | 25 | virtual void answeredMail(const RecMail&mail)=0; |
26 | 26 | ||
27 | static AbstractMail* getWrapper(IMAPaccount *a); | 27 | static AbstractMail* getWrapper(IMAPaccount *a); |
28 | static AbstractMail* getWrapper(POP3account *a); | 28 | static AbstractMail* getWrapper(POP3account *a); |
29 | static QString decode_quoted_printable(const char*text); | ||
29 | }; | 30 | }; |
30 | |||
31 | #endif | 31 | #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 | |||
394 | body_text = fetchPart(mail,path,true); | 394 | body_text = fetchPart(mail,path,true); |
395 | if (singlePart.Encoding()=="quoted-printable") { | ||
396 | body_text = decode_quoted_printable(body_text.latin1()); | ||
397 | } | ||
395 | target_body.setBodytext(body_text); | 398 | target_body.setBodytext(body_text); |
@@ -401,2 +404,5 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mai | |||
401 | body_text = fetchPart(mail,path,true); | 404 | body_text = fetchPart(mail,path,true); |
405 | if (singlePart.Encoding()=="quoted-printable") { | ||
406 | body_text = decode_quoted_printable(body_text.latin1()); | ||
407 | } | ||
402 | target_body.setBodytext(body_text); | 408 | target_body.setBodytext(body_text); |
@@ -457,3 +463,3 @@ QStringList IMAPwrapper::address_list_to_stringlist(clist*list) | |||
457 | 463 | ||
458 | QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call) | 464 | QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call,const QString&enc) |
459 | { | 465 | { |
@@ -509,3 +515,7 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const QValueList<int>&path,boo | |||
509 | if (text) { | 515 | if (text) { |
510 | body = QString(text); | 516 | if (enc=="quoted-printable") { |
517 | body = decode_quoted_printable(text); | ||
518 | } else { | ||
519 | body = QString(text); | ||
520 | } | ||
511 | free(text); | 521 | free(text); |
@@ -549,3 +559,3 @@ void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mai | |||
549 | if (currentPart.Type()=="text" && target_body.Bodytext().isNull() ) { | 559 | if (currentPart.Type()=="text" && target_body.Bodytext().isNull() ) { |
550 | QString body_text = fetchPart(mail,clist,true); | 560 | QString body_text = fetchPart(mail,clist,true,currentPart.Encoding()); |
551 | target_body.setDescription(currentPart); | 561 | target_body.setDescription(currentPart); |
@@ -707,3 +717,3 @@ QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) | |||
707 | { | 717 | { |
708 | return fetchPart(mail,part.Positionlist(),false); | 718 | return fetchPart(mail,part.Positionlist(),false,part.Encoding()); |
709 | } | 719 | } |
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: | |||
36 | 36 | ||
37 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); | 37 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc=""); |
38 | 38 | ||
@@ -50,3 +50,3 @@ protected: | |||
50 | 50 | ||
51 | private: | 51 | |
52 | IMAPaccount *account; | 52 | IMAPaccount *account; |