aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/rfc822/MCMessageParser.cc21
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)