-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 33 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.h | 1 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.cpp | 33 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.h | 1 |
4 files changed, 52 insertions, 16 deletions
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp index 2c2a42a..65cd4ba 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp @@ -448,12 +448,6 @@ void POP3wrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mime, clistiter * cur = 0; - mailmime_single_fields fields; int res; QString b; - memset(&fields, 0, sizeof(struct mailmime_single_fields)); RecPart part; - if (mime->mm_mime_fields != NULL) { - mailmime_single_fields_init(&fields, mime->mm_mime_fields, - mime->mm_content_type); - } switch (mime->mm_type) { @@ -461,2 +455,3 @@ void POP3wrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mime, r = mailmessage_fetch_section(message,mime,&data,&len); + part.setSize(len); fillSingleBody(part,message,mime); @@ -525,4 +520,11 @@ void POP3wrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime) } - mailmime_content*type = mime->mm_content_type; mailmime_field*field = 0; + mailmime_single_fields fields; + memset(&fields, 0, sizeof(struct mailmime_single_fields)); + if (mime->mm_mime_fields != NULL) { + mailmime_single_fields_init(&fields, mime->mm_mime_fields, + mime->mm_content_type); + } + + mailmime_content*type = fields.fld_content; clistcell*current; @@ -556,2 +558,5 @@ void POP3wrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime) } + if (type->ct_parameters) { + fillParameters(target,type->ct_parameters); + } } @@ -575,3 +580,15 @@ void POP3wrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime) } - // TODO search the parameter list for unique id and so on +} + +void POP3wrapper::fillParameters(RecPart&target,clist*parameters) +{ + if (!parameters) {return;} + clistcell*current=0; + mailmime_parameter*param; + for (current=clist_begin(parameters);current!=0;current=clist_next(current)) { + param = (mailmime_parameter*)current->data; + if (param) { + target.addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); + } + } } diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h index 4171a76..b17928e 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.h +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h @@ -48,2 +48,3 @@ protected: static void fillSingleBody(RecPart&target,mailmessage*message,mailmime*mime); + static void fillParameters(RecPart&target,clist*parameters); static QString POP3wrapper::getencoding(mailmime_mechanism*aEnc); diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp index 2c2a42a..65cd4ba 100644 --- a/noncore/net/mail/pop3wrapper.cpp +++ b/noncore/net/mail/pop3wrapper.cpp @@ -448,12 +448,6 @@ void POP3wrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mime, clistiter * cur = 0; - mailmime_single_fields fields; int res; QString b; - memset(&fields, 0, sizeof(struct mailmime_single_fields)); RecPart part; - if (mime->mm_mime_fields != NULL) { - mailmime_single_fields_init(&fields, mime->mm_mime_fields, - mime->mm_content_type); - } switch (mime->mm_type) { @@ -461,2 +455,3 @@ void POP3wrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mime, r = mailmessage_fetch_section(message,mime,&data,&len); + part.setSize(len); fillSingleBody(part,message,mime); @@ -525,4 +520,11 @@ void POP3wrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime) } - mailmime_content*type = mime->mm_content_type; mailmime_field*field = 0; + mailmime_single_fields fields; + memset(&fields, 0, sizeof(struct mailmime_single_fields)); + if (mime->mm_mime_fields != NULL) { + mailmime_single_fields_init(&fields, mime->mm_mime_fields, + mime->mm_content_type); + } + + mailmime_content*type = fields.fld_content; clistcell*current; @@ -556,2 +558,5 @@ void POP3wrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime) } + if (type->ct_parameters) { + fillParameters(target,type->ct_parameters); + } } @@ -575,3 +580,15 @@ void POP3wrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime) } - // TODO search the parameter list for unique id and so on +} + +void POP3wrapper::fillParameters(RecPart&target,clist*parameters) +{ + if (!parameters) {return;} + clistcell*current=0; + mailmime_parameter*param; + for (current=clist_begin(parameters);current!=0;current=clist_next(current)) { + param = (mailmime_parameter*)current->data; + if (param) { + target.addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); + } + } } diff --git a/noncore/net/mail/pop3wrapper.h b/noncore/net/mail/pop3wrapper.h index 4171a76..b17928e 100644 --- a/noncore/net/mail/pop3wrapper.h +++ b/noncore/net/mail/pop3wrapper.h @@ -48,2 +48,3 @@ protected: static void fillSingleBody(RecPart&target,mailmessage*message,mailmime*mime); + static void fillParameters(RecPart&target,clist*parameters); static QString POP3wrapper::getencoding(mailmime_mechanism*aEnc); |