diff --git a/pymisp/tools/emailobject.py b/pymisp/tools/emailobject.py index 9c3c34e..93aa61b 100644 --- a/pymisp/tools/emailobject.py +++ b/pymisp/tools/emailobject.py @@ -6,11 +6,10 @@ import logging import ipaddress import email.utils from email import policy, message_from_bytes -from email.utils import parsedate_to_datetime from email.message import EmailMessage from io import BytesIO from pathlib import Path -from typing import Union, List, Tuple, Dict, cast +from typing import Union, List, Tuple, Dict, cast, Any from extract_msg import openMsg from extract_msg.message import Message as MsgObj @@ -101,13 +100,9 @@ class EMailObject(AbstractMISPObjectGenerator): eml = self._build_eml(message, body, attachments) return eml - def _extract_msg_objects(self, msg_obj: MsgObj): + def _extract_msg_objects(self, msg_obj: MsgObj) -> Tuple[EmailMessage, Dict, List[Any]]: """Extracts email objects needed to construct an eml from a msg.""" - original_eml_header = msg_obj._getStringStream('__substg1.0_007D') - if original_eml_header: - message = email.message_from_string(original_eml_header, policy=policy.default) - else: - message = None + message: EmailMessage = email.message_from_string(msg_obj.header.as_string(), policy=policy.default) # type: ignore body = {} if msg_obj.body is not None: body['text'] = {"obj": msg_obj.body, @@ -279,9 +274,8 @@ class EMailObject(AbstractMISPObjectGenerator): if headers: self.add_attribute("header", "\n".join(headers)) - if "Date" in message: - self.add_attribute("send-date", - parsedate_to_datetime(message.get('date'))) + if "Date" in message and message.get('date').datetime is not None: + self.add_attribute("send-date", message.get('date').datetime) if "To" in message: self.__add_emails("to", message["To"])