在odoo中获取html格式的电子邮件正文

get email body with html format in odoo

我想获取 html 格式的电子邮件正文,

defaults = {
        'name':  msg.get('subject') or _("No Subject"),
        'email_from': msg.get('from'),
        'email_cc': msg.get('cc'),
        'partner_id': msg.get('author_id', False),
        'description': msg.get('body'), 
    }

我想将电子邮件正文添加到描述中,但是当我使用 'description': msg.get('body'), 时,它全部采用文本格式, 我想获取 HTML 格式的电子邮件正文

<html xmlns="https://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<title>Christmas Email template</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0 ">
<meta name="format-detection" content="telephone=no">
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800" rel="stylesheet">
<!--<![endif]-->
<style type="text/css">
body {
 margin: 0 !important;
 padding: 0 !important;
 -webkit-text-size-adjust: 100% !important;
 -ms-text-size-adjust: 100% !important;
 -webkit-font-smoothing: antialiased !important;
}
img {
 border: 0 !important;
 outline: none !important;
}
p {
 Margin: 0px !important;
 Padding: 0px !important;
}
table {
 border-collapse: collapse;
 mso-table-lspace: 0px;
 mso-table-rspace: 0px;
}
td, a, span {
 border-collapse: collapse;
 mso-line-height-rule: exactly;
}
.ExternalClass * {
 line-height: 100%;
}
.em_defaultlink a {
 color: inherit !important;
 text-decoration: none !important;
}
span.MsoHyperlink {
 mso-style-priority: 99;
 color: inherit;
}
span.MsoHyperlinkFollowed {
 mso-style-priority: 99;
 color: inherit;
}
 @media only screen and (min-width:481px) and (max-width:699px) {
.em_main_table {
 width: 100% !important;
}
.em_wrapper {
 width: 100% !important;
}
.em_hide {
 display: none !important;
}
.em_img {
 width: 100% !important;
 height: auto !important;
}
.em_h20 {
 height: 20px !important;
}
.em_padd {
 padding: 20px 10px !important;
}
}
@media screen and (max-width: 480px) {
.em_main_table {
 width: 100% !important;
}
.em_wrapper {
 width: 100% !important;
}
.em_hide {
 display: none !important;
}
.em_img {
 width: 100% !important;
 height: auto !important;
}
.em_h20 {
 height: 20px !important;
}
.em_padd {
 padding: 20px 10px !important;
}
.em_text1 {
 font-size: 16px !important;
 line-height: 24px !important;
}
u + .em_body .em_full_wrap {
 width: 100% !important;
 width: 100vw !important;
}
}
</style>
</head>
 
<body class="em_body" style="margin:0px; padding:0px;" bgcolor="#efefef">
<table class="em_full_wrap" valign="top" width="100%" cellspacing="0" cellpadding="0" border="0" bgcolor="#efefef" align="center">
  <tbody><tr>
    <td valign="top" align="center"><table class="em_main_table" style="width:700px;" width="700" cellspacing="0" cellpadding="0" border="0" align="center">
        <!--Header section-->
        <tbody><tr>
          <td style="padding:15px;" class="em_padd" valign="top" bgcolor="#f6f7f8" align="center"><table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
              <tbody><tr>
                <td style="font-family:'Open Sans', Arial, sans-serif; font-size:12px; line-height:15px; color:#0d1121;" valign="top" align="center">Test Email Sample | <a href="#" target="_blank" style="color:#0d1121; text-decoration:underline;">View Online</a></td>
              </tr>
            </tbody></table></td>
        </tr>
        <!--//Header section--> 
        <!--Banner section-->
        <tr>
          <td valign="top" align="center"><table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
              <tbody><tr>
                <td valign="top" align="center"><img class="em_img" alt="merry Christmas" style="display:block; font-family:Arial, sans-serif; font-size:30px; line-height:34px; color:#000000; max-width:700px;" src="images/05be8b57-6b90-4ebd-ba17-4014c79f2e4b.jpg" width="700" border="0" height="345"></td>
              </tr>
            </tbody></table></td>
        </tr>
        <!--//Banner section--> 
        <!--Content Text Section-->
                 <tr>
          <td style="padding:35px 70px 30px;" class="em_padd" valign="top" bgcolor="#0d1121" align="center"><table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
              <tbody><tr>
                <td style="font-family:'Open Sans', Arial, sans-serif; font-size:16px; line-height:30px; color:#ffffff;" valign="top" align="center">This is a sample email which shall be accommodated in a single paragraph</td>
              </tr>
              <tr>
                <td style="font-size:0px; line-height:0px; height:15px;" height="15">&nbsp;</td>
<!--—this is space of 15px to separate two paragraphs ---->
              </tr>
              <tr>
                <td style="font-family:'Open Sans', Arial, sans-serif; font-size:18px; line-height:22px; color:#fbeb59; letter-spacing:2px; padding-bottom:12px;" valign="top" align="center">This is paragraph 2 of font size 18px and #fbeb59 font color with a line spacing of 15px</td>
              </tr>
              <tr>
                <td class="em_h20" style="font-size:0px; line-height:0px; height:25px;" height="25">&nbsp;</td>
<!--—this is space of 25px to separate two paragraphs ---->
              </tr>
<tr>
                <td style="font-family:'Open Sans', Arial, sans-serif; font-size:18px; line-height:22px; color:#fbeb59; text-transform:uppercase; letter-spacing:2px; padding-bottom:12px;" valign="top" align="center"> This is paragraph 3 of font size 18px and #fbeb59 font color with a line spacing of 25px and Uppercase</td>
              </tr>
            </tbody></table></td>
        </tr>
 
        <!--//Content Text Section--> 
        <!--Footer Section-->
        <tr>
          <td style="padding:38px 30px;" class="em_padd" valign="top" bgcolor="#f6f7f8" align="center"><table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
              <tbody><tr>
                <td style="padding-bottom:16px;" valign="top" align="center"><table cellspacing="0" cellpadding="0" border="0" align="center">
                    <tbody><tr>
                      <td valign="top" align="center"><a href="#" target="_blank" style="text-decoration:none;"><img src="images/fb.png" alt="fb" style="display:block; font-family:Arial, sans-serif; font-size:14px; line-height:14px; color:#ffffff; max-width:26px;" width="26" border="0" height="26"></a></td>
                      <td style="width:6px;" width="6">&nbsp;</td>
                      <td valign="top" align="center"><a href="#" target="_blank" style="text-decoration:none;"><img src="images/tw.png" alt="tw" style="display:block; font-family:Arial, sans-serif; font-size:14px; line-height:14px; color:#ffffff; max-width:27px;" width="27" border="0" height="26"></a></td>
                      <td style="width:6px;" width="6">&nbsp;</td>
                      <td valign="top" align="center"><a href="#" target="_blank" style="text-decoration:none;"><img src="images/yt.png" alt="yt" style="display:block; font-family:Arial, sans-serif; font-size:14px; line-height:14px; color:#ffffff; max-width:26px;" width="26" border="0" height="26"></a></td>
                    </tr>
                  </tbody></table></td>
              </tr>
              <tr>
                <td style="font-family:'Open Sans', Arial, sans-serif; font-size:11px; line-height:18px; color:#999999;" valign="top" align="center"><a href="#" target="_blank" style="color:#999999; text-decoration:underline;">PRIVACY STATEMENT</a> | <a href="#" target="_blank" style="color:#999999; text-decoration:underline;">TERMS OF SERVICE</a> | <a href="#" target="_blank" style="color:#999999; text-decoration:underline;">RETURNS</a><br>
                  © 2017 Companyname. All Rights Reserved.<br>
                  If you do not wish to receive any further emails from us, please <a href="#" target="_blank" style="text-decoration:none; color:#999999;">unsubscribe</a></td>
              </tr>
            </tbody></table></td>
        </tr>
        <tr>
          <td class="em_hide" style="line-height:1px;min-width:700px;background-color:#ffffff;"><img alt="" src="images/spacer.gif" style="max-height:1px; min-height:1px; display:block; width:700px; min-width:700px;" width="700" border="0" height="1"></td>
        </tr>
      </tbody></table></td>
  </tr>
</tbody></table>
<div class="em_hide" style="white-space: nowrap; display: none; font-size:0px; line-height:0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</body></html>

这是创建新工单(传入消息)时的基本功能

 @api.model
def message_new(self, msg, custom_values=None):
    """ Overrides mail_thread message_new that is called by the mailgateway
        through message_process.
        This override updates the document according to the email.
    """
    # remove default author when going through the mail gateway. Indeed we
    # do not want to explicitly set user_id to False; however we do not
    # want the gateway user to be responsible if no other responsible is
    # found.
    create_context = dict(self.env.context or {})
    create_context['default_user_id'] = False
    defaults = {
        'name':  msg.get('subject') or _("No Subject"),
        'email_from': msg.get('from'),
        'email_cc': msg.get('cc'),
        'partner_id': msg.get('author_id', False),
    }
    if custom_values:
        defaults.update(custom_values)

    res_id = super(ProjectIssue, self.with_context(create_context)).message_new(msg, custom_values=defaults)
    issue = self.browse(res_id)
    email_list = issue.email_split(msg)
    partner_ids = filter(None, issue._find_partner_from_emails(email_list))
    issue.message_subscribe(partner_ids)
    return res_id

当我添加

'description' : msg.get('body'),

我可以得到电子邮件的正文,但它是文本格式的, 然后我查看 'description' 并找到了这个

description = fields.text('Private Note')

这就是为什么我只得到文本格式,而不是 HTML 格式, 所以我把描述格式改成了这个

description = fields.Html('Private Note')

然后描述的格式恢复正常和可读。