WSO2 ESB 发送 HTML 电子邮件

WSO2 ESB Send HTML email

我有代理发送电子邮件。 我收到 mailto、主题和正文(html 格式)

我配置axis2.xml 添加

<messageFormatter class="org.apache.axis2.transport.http.ApplicationXMLFormatter" contentType="text/html"/>

我的序列有效,发送电子邮件,但带有硬编码正文:

<sequence name="SendMailTransportSequence" trace="disable"
    xmlns="http://ws.apache.org/ns/synapse">
    <property name="messageType" scope="axis2" value="text/html" />
    <property name="ContentType" scope="axis2" value="text/html" />
    <property name="OUT_ONLY" scope="default" value="true" />
    <property name="FORCE_SC_ACCEPTED" scope="axis2" value="true" />

    <!-- SUBJECT -->
    <property expression="get-property('mail.asunto')" name="Subject"
        scope="transport" />
    <!-- TO -->
    <property expression="get-property('mail.destinatario')" name="uri.var.dest"
        scope="default" type="STRING" />
    <header expression="fn:concat('mailto:',get-property('uri.var.dest'))"
        name="To" scope="default" />

    <!-- BODY -->
     <script language="js"><![CDATA[
        mc.setPayloadXML(<html><h1>this is the title</h1><br/><p>this is the content................</p></html>);
     ]]></script>

    <send />
</sequence>

收到的邮件:

但是当我尝试从 属性 发送正文时,我无法到达

我试试

 <script language="js"><![CDATA[
    var body = mc.getProperty("mail.cuerpo");
    mc.setPayloadXML(<html>{body}</html>);
 ]]></script>

也试试

 <script language="js"><![CDATA[
    var body = "<h1>this is the title</h1><br/><p>this is the content................</p>";
    mc.setPayloadXML(<html>{body}</html>);
 ]]></script>

在这两种情况下,内容都像文本一样被尝试

另一方面,我尝试使用 payload factory 但没有成功:

在这种情况下,内容像附件一样发送,没有名称

<payloadFactory media-type="xml">
    <format>
        <Body></Body>
    </format>
    <args>
        <arg evaluator="xml" expression="get-property('mail.cuerpo')" />
    </args>
</payloadFactory>

在这种情况下,邮件正文也像纯文本一样收到

<payloadFactory media-type="xml">
    <format>
        <ns:text xmlns:ns="http://ws.apache.org/commons/ns/payload"></ns:text>
    </format>
    <args>
        <arg evaluator="xml" expression="get-property('mail.cuerpo')" />
    </args>
</payloadFactory>   

那么,以 html 格式发送电子邮件的正确格式是什么? 提前致谢

在这种情况下,您不能在文本字符串中附加 XML 元素。所以你必须用 XML child 添加值。因为 WSO2 esb 使用 java 脚本犀牛。使用 E4X 写入。

var nextId = 1234;
var first = "John";
var last = "Smith";

var c = <table>
<tr>
<th>Table header</th>
<th>Table header</th>
</tr>
<tr>
<td>{first}</td>
<td>{last}</td>
</tr>
</table>;

for (i = 0; i < 10; i++) { 
    c.table += <tr>
<td>{i}</td>
<td>{i}</td>
</tr>;
}

mc.setPayloadXML(c);
                    

希望你能从上面的代码中得到启发。如果您想了解更多。请参阅此 link .E4X Quick Start Guide