formataddr (from the email python library) writes email_from as '"name" <email>' in the email_from field of the mail.compose.message record. When the mail is rendered, onchange_template_id is triggered. This then overwrites the values of email_from among other fields. What happens is that it uses the email_from field from the template to render the email_from, bypassing what was put by formataddr before. What happens in some cases is that it is rendered as 'name <email>' (note the quotes have been stripped away). If name contains arbitrary symbols, e.g. name = 'pépé [company] <pdg>, ohlala', then getaddresses which is supposed to parse the (name, email) pairs gets thrown off (in particular, <pdg> will be interpreted as an email address, and many other problems with the various special symbols). It then gives these wrong elements as email addresses, which will usually crash when getting non-ascii symbols (i.e. these strings don't respect the relevant RFC for email addresses). Closes: https://github.com/odoo/odoo/issues/23502 https://github.com/odoo/odoo/pull/2311823118 opw 815202 opw 1824243
147 lines
7.1 KiB
XML
147 lines
7.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data noupdate="1">
|
|
|
|
<!--Email template -->
|
|
<record id="email_template_edi_sale" model="mail.template">
|
|
<field name="name">Sales Order - Send by Email</field>
|
|
<field name="email_from">${(object.user_id.email and '"%s" <%s>' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
|
|
<field name="subject">${object.company_id.name} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })</field>
|
|
<field name="partner_to">${object.partner_id.id}</field>
|
|
<field name="model_id" ref="sale.model_sale_order"/>
|
|
<field name="auto_delete" eval="True"/>
|
|
<field name="report_template" ref="action_report_saleorder"/>
|
|
<field name="report_name">${(object.name or '').replace('/','_')}${object.state == 'draft' and '_draft' or ''}</field>
|
|
<field name="lang">${object.partner_id.lang}</field>
|
|
<field name="body_html"><![CDATA[
|
|
<p>Dear ${object.partner_id.name}
|
|
% set access_action = object.with_context(force_website=True).get_access_action()
|
|
% set is_online = access_action and access_action['type'] == 'ir.actions.act_url'
|
|
% set doc_name = 'quotation' if object.state in ('draft', 'sent') else 'order confirmation'
|
|
% set pay_sign_name = object.get_portal_confirmation_action()
|
|
% set access_name = is_online and object.state in ('draft', 'sent') and pay_sign_name in ('pay', 'sign') and 'Accept and %s online' % pay_sign_name or 'View %s' % doc_name
|
|
% set access_url = is_online and object.get_mail_url() or ''
|
|
|
|
% if object.partner_id.parent_id:
|
|
(<i>${object.partner_id.parent_id.name}</i>)
|
|
% endif
|
|
,</p>
|
|
<p>
|
|
Here is
|
|
% if ctx.get('proforma')
|
|
in attachment, your pro-forma invoice
|
|
% else
|
|
the ${doc_name} <strong>${object.name}</strong>
|
|
% endif
|
|
% if object.origin:
|
|
(with reference: ${object.origin} )
|
|
% endif
|
|
amounting in <strong>${format_amount(object.amount_total, object.currency_id)}</strong>
|
|
from ${object.company_id.name}.
|
|
</p>
|
|
|
|
% if is_online and not ctx.get('proforma'):
|
|
<br/><br/>
|
|
<center>
|
|
<a href="${access_url}" style="background-color: #1abc9c; padding: 20px; text-decoration: none; color: #fff; border-radius: 5px; font-size: 16px;" class="o_default_snippet_text">${access_name}</a>
|
|
<br/><br/><br/>
|
|
<span style="color:#888888">(or view attached PDF)</span>
|
|
</center>
|
|
<br/>
|
|
% endif
|
|
|
|
<p>You can reply to this email if you have any questions.</p>
|
|
<p>Thank you,</p>
|
|
|
|
<p style="color:#888888;">
|
|
% if object.user_id and object.user_id.signature:
|
|
${object.user_id.signature | safe}
|
|
% endif
|
|
</p>
|
|
]]></field>
|
|
</record>
|
|
|
|
<!--Default Notification Email template for invoices-->
|
|
<record id="sale.mail_template_data_notification_email_sale_order" model="mail.template">
|
|
<field name="name">Sales Order Notification Email</field>
|
|
<field name="subject">${object.subject}</field>
|
|
<field name="model_id" ref="mail.model_mail_message"/>
|
|
<field name="auto_delete" eval="True"/>
|
|
<field name="body_html"><![CDATA[<html>
|
|
<head></head>
|
|
% set record = ctx.get('record')
|
|
% set company = record and record.company_id or ctx.get('company')
|
|
<body style="margin: 0; padding: 0;">
|
|
<table border="0" width="100%" cellpadding="0" bgcolor="#ededed" style="padding: 20px; background-color: #ededed; border-collapse:separate;" summary="o_mail_notification">
|
|
<tbody>
|
|
|
|
<!-- HEADER -->
|
|
<tr>
|
|
<td align="center" style="min-width: 590px;">
|
|
<table width="590" border="0" cellpadding="0" bgcolor="#875A7B" style="min-width: 590px; background-color: rgb(135,90,123); padding: 20px; border-collapse:separate;">
|
|
<tr>
|
|
<td valign="middle">
|
|
<span style="font-size:20px; color:white; font-weight: bold;">
|
|
${object.record_name}
|
|
</span>
|
|
</td>
|
|
<td valign="middle" align="right">
|
|
<img src="/logo.png?company=${company.id}" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${company.name}">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<!-- CONTENT -->
|
|
<tr>
|
|
<td align="center" style="min-width: 590px;">
|
|
<table width="590" border="0" cellpadding="0" bgcolor="#ffffff" style="min-width: 590px; background-color: rgb(255, 255, 255); padding: 20px; border-collapse:separate;">
|
|
<tbody>
|
|
<td valign="top" style="font-family:Arial,Helvetica,sans-serif; color: #555; font-size: 14px;">
|
|
${object.body | safe}
|
|
</td>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<!-- FOOTER -->
|
|
<tr>
|
|
<td align="center" style="min-width: 590px;">
|
|
<table width="590" border="0" cellpadding="0" bgcolor="#875A7B" style="min-width: 590px; background-color: rgb(135,90,123); padding: 20px; border-collapse:separate;">
|
|
<tr>
|
|
<td valign="middle" align="left" style="color: #fff; padding-top: 10px; padding-bottom: 10px; font-size: 12px;">
|
|
${company.name}<br/>
|
|
${company.phone or ''}
|
|
</td>
|
|
<td valign="middle" align="right" style="color: #fff; padding-top: 10px; padding-bottom: 10px; font-size: 12px;">
|
|
% if company.email:
|
|
<a href="mailto:${company.email}" style="text-decoration:none; color: white;">${company.email}</a><br/>
|
|
% endif
|
|
% if company.website:
|
|
<a href="${company.website}" style="text-decoration:none; color: white;">
|
|
${company.website}
|
|
</a>
|
|
% endif
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">
|
|
Powered by <a target="_blank" href="https://www.odoo.com">Odoo</a>.
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</body>
|
|
</html>
|
|
]]></field>
|
|
</record>
|
|
|
|
|
|
</data>
|
|
</odoo>
|