通过 Mule 4 发送电子邮件时将 JSON 数组转换为表结构格式

问题描述

我需要以表格格式发送错误报告,需要以电子邮件正文的形式发送。 我正在将错误报告构建为 JSON 数组,我需要进行 HTML 转换以将其构建为表格格式。

以下是 JSON 数组和电子邮件正文的预期结果。

[ { "templateID": "72","houseNumber": "SR0000V-test","dataMigrationSourceId": 2102866,"errorDescription": "Process aborted:CatalogItem not found in Target system!" },{ "templateID": "","errorDescription": "Process aborted: TemplateID is not present!" } ]

预期的电子邮件正文:

enter image description here

如果不是完全相同的格式,则需要类似于表结构或更易读的格式的结果。 有人可以帮我在 Mule 4 中构建这种格式

谢谢

解决方法

Html 表(有效载荷)

您可以在@() 中自定义您的css。我只是保留了一个对你有用的样本

%dw 2.0
output application/xml writeDeclaration=false
---
{
    table @(style: "width: 50%; border: 1px solid grey; font-family: Monospace" ): {
        tr @(bgcolor: "#6c7ae0",style: "color: white !important; font-size:14px; "): {
            th @() : "templateId",th @() : "houseNumber",th @() : "dataMigrationSourceId",th @() : "errorDescription"
        },(payload map (item,index) -> {
            tr @(align:"center",style: "color: #666666; font-size:12px; font-weight: 500; width:10%"): {
                td @(): item.templateID,td @(): item.houseNumber,td @(): item.dataMigrationSourceId,td @(): item.errorDescription
            }
        })
    }
}

解析器模板

我进一步使用解析器模板连接器来编写 html 内容,因为上表我们将作为嵌入在邮件中的 html 表发送。

<html>
  <head></head>
  <body>
    <p>Hello XYZ,</p>
    <p>Please find the error report for today's run. </p>
    <br />
  #[payload]
<br /><br />
<p>This is an automated mail,please do not reply.</p>
<br />
<p>Thanks and Regards,</p>
</body>
</html>

这里的payload表示我们上面创建的html表。

最后,在邮件(发送)连接器中,您可以将此 html 表作为正文内容中的 payload 引用。

注意 - 确保将邮件正文发送连接器中的 ContentType 更改为 text/html