diff options
-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) |