2016-07-02 15 views
2

メールを送信するプロキシがあります。 私は(html形式で)MAILTO、件名と本文はWSO2 ESB 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> 

受信したメール:

MAIL OK

しかし、私はそれを

に到達カントプロパティから体を送信しようとすると、私は

<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> 

コンテンツは、テキストのように試され、両方のケースでを試してみてください Mail Wrong

一方、私は成功していないペイロードファクトリを使用しようとします:

コンテンツが

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

をNONAME

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

の添付ファイルのように送信し、この場合には、メール本文があまりにもプレーンテキストのように受け取られているこの場合だから、正しい形式は何ですかhtml形式で電子メールを送信するには? ありがとうございました

+0

コンテンツタイプを正しく設定しましたか? –

+0

実装については不明ですが、メソッドsetPayloadXMLは、複雑なHTMLコンテンツではなく、短い通常の文字列を考慮して、テンプレート内のその変数を期待しているかもしれません。 HTMLは有害なので、なぜそれがエスケープされます。 – simar

+0

別の可能性のあるケース。 WebUI ManagmentConsoleを使用する場合は、常にエディタのコンテンツをエスケープします。私は以前の成功の経験を持っていましたが、単純なテキストエディタでプロキシの説明付きのXMLファイルを手動で編集するだけでした。シンプルなフォーマットはそれほど難しくありません。 – simar

答えて

4

この場合、XML要素をテキスト文字列に追加することはできません。 XMLの子として値を追加する必要があります。 WSO2はJavaスクリプトrhinoを使用しているためです。 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); 
 
       

あなたは上記のコードからアイデアを得ることができると思います。あなたがもっと知りたいのであれば、このリンクを参照してください。 E4X Quick Start Guide