diff --git a/mail_embed_image/models/ir_mail_server.py b/mail_embed_image/models/ir_mail_server.py index 3feba5fd..a604b399 100644 --- a/mail_embed_image/models/ir_mail_server.py +++ b/mail_embed_image/models/ir_mail_server.py @@ -8,7 +8,7 @@ from odoo.addons.base.ir.ir_mail_server import encode_header_param from lxml.html.soupparser import fromstring from lxml import etree from base64 import b64encode -from email.mime.base import MIMEBase +from email.mime.image import MIMEImage from email import Encoders @@ -63,22 +63,24 @@ class IrMailServer(models.Model): if msg.get_content_subtype() == 'html': body = msg.get_payload(decode=True) root = fromstring(body) - for img in root.xpath("//img[@src^='http']"): - src = img.get('src') - content = requests.get(src).content - content_base64 = b64encode(content) + for img in root.xpath( + "//img[starts-with(@src, '/web/image')]"): + base_url = self.env['ir.config_parameter'].get_param( + 'web.base.url') + src = base_url + img.get('src') + response = requests.get(src) + #content_base64 = b64encode(response.content) cid = uuid.uuid4().hex filename_rfc2047 = encode_header_param(cid) - part = MIMEBase('application', 'octet-stream') + part = MIMEImage(response.content) part.set_param('name', filename_rfc2047) part.add_header( 'Content-Disposition', 'attachment', cid=cid, filename=filename_rfc2047, - content=content_base64, ) - part.set_payload(content) + part.set_payload(response.content) Encoders.encode_base64(part) result.attach(part) img.set('src', 'cid:%s' % (cid))