diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2013-11-13 00:23:38 -0800 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2013-11-13 00:23:38 -0800 |
commit | 257a7818f58ee67953e91e381dc3e28a41f14845 (patch) | |
tree | 4ad209316b74fd72896b15433bf4f084e8906467 /src/core/rfc822/MCMessageParser.cc | |
parent | 4ed4d64eab9871464911bfa1dac1c86d522dafa2 (diff) |
Fixed #454: fixed parsing of headers
Diffstat (limited to 'src/core/rfc822/MCMessageParser.cc')
-rw-r--r-- | src/core/rfc822/MCMessageParser.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/core/rfc822/MCMessageParser.cc b/src/core/rfc822/MCMessageParser.cc index 435841f5..725f3529 100644 --- a/src/core/rfc822/MCMessageParser.cc +++ b/src/core/rfc822/MCMessageParser.cc @@ -32,15 +32,22 @@ MessageParser::MessageParser(Data * data) init(); mData = (Data *) data->retain(); - mailmessage * msg; - struct mailmime * mime; - - msg = data_message_init(data->bytes(), data->length()); - mailmessage_get_bodystructure(msg, &mime); + mailmessage * msg; + struct mailmime * mime; + + msg = data_message_init(data->bytes(), data->length()); + mailmessage_get_bodystructure(msg, &mime); mMainPart = (AbstractPart *) Attachment::attachmentsWithMIME(msg->msg_mime)->retain(); mMainPart->applyUniquePartID(); - header()->importIMFFields(msg->msg_fields); - mailmessage_free(msg); + + size_t cur_token = 0; + struct mailimf_fields * fields; + int r = mailimf_envelope_and_optional_fields_parse(data->bytes(), data->length(), &cur_token, &fields); + if (r == MAILIMAP_NO_ERROR) { + header()->importIMFFields(fields); + mailimf_fields_free(fields); + } + mailmessage_free(msg); } MessageParser::MessageParser(MessageParser * other) : AbstractMessage(other) |