diff --git a/msg_attachments_to_mail_message/models/ir_attachment.py b/msg_attachments_to_mail_message/models/ir_attachment.py
index 38e9556..836fd89 100644
--- a/msg_attachments_to_mail_message/models/ir_attachment.py
+++ b/msg_attachments_to_mail_message/models/ir_attachment.py
@@ -5,6 +5,11 @@ import base64
import logging
from odoo.tools.translate import _
from email.message import EmailMessage
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from email.mime.image import MIMEImage
+from email.mime.base import MIMEBase
+from email import encoders
import lxml.html
import re
from odoo.tools import email_normalize, email_split
@@ -49,8 +54,103 @@ class IrAttachment(models.Model):
# Replace any combination of whitespace (including newlines) with a single space
return ' '.join(str(value).split())
+ def _msg_to_eml(self, msg_data):
+ """Convert MSG file data to EML format."""
+ try:
+ # Read the MSG file
+ msg_file = extract_msg.Message(msg_data)
+ _logger.info('Converting MSG to EML - Subject: %s, From: %s, To: %s',
+ msg_file.subject, msg_file.sender, msg_file.to)
+
+ # Create email message
+ email_msg = MIMEMultipart('related')
+
+ # Add headers
+ email_msg['Subject'] = self._clean_header_value(msg_file.subject) or "No Subject"
+ email_msg['From'] = self._clean_header_value(msg_file.sender)
+ email_msg['To'] = self._clean_header_value(msg_file.to)
+ email_msg['Cc'] = self._clean_header_value(msg_file.cc) if msg_file.cc else None
+ email_msg['Date'] = msg_file.date.strftime('%a, %d %b %Y %H:%M:%S %z') if msg_file.date else formatdate(localtime=True)
+
+ # Add original MSG headers if present
+ for header in ['Message-ID', 'In-Reply-To', 'References']:
+ if header.lower() in msg_file.header:
+ header_value = self._clean_header_value(msg_file.header[header.lower()])
+ if header_value: # Only add header if it has a value
+ email_msg[header] = header_value
+
+ # Set the body
+ if msg_file.body:
+ body = msg_file.body
+
+ # Si ce n'est pas déjà du HTML mais contient des CIDs, convertir en HTML
+ if '
+ body = body.replace('\n', '
')
+ # Convertir les références CID en balises img
+ import re
+ body = re.sub(
+ r'\[cid:([^\]]+)\]',
+ lambda m: f'',
+ body
+ )
+ # Envelopper dans du HTML
+ body = f'