summaryrefslogtreecommitdiff
authoralwin <alwin>2003-12-16 02:13:09 (UTC)
committer alwin <alwin>2003-12-16 02:13:09 (UTC)
commitf42c15f884d4377bc99d73e16fa1722b0fb2a4d3 (patch) (side-by-side diff)
tree0ecd625c8a5913285fa31a050a9a6e49c13fbe4b
parent32d48372f7b5ec9e4586ea74cc444838b157248e (diff)
downloadopie-f42c15f884d4377bc99d73e16fa1722b0fb2a4d3.zip
opie-f42c15f884d4377bc99d73e16fa1722b0fb2a4d3.tar.gz
opie-f42c15f884d4377bc99d73e16fa1722b0fb2a4d3.tar.bz2
quoted-printable text will be decoded for display
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/abstractmail.cpp21
-rw-r--r--noncore/net/mail/abstractmail.h2
-rw-r--r--noncore/net/mail/imapwrapper.cpp16
-rw-r--r--noncore/net/mail/imapwrapper.h4
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp21
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h2
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp16
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h4
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;