如何避免以邮递员的多部分形式数据发送的JSON文本附加到电子邮件

时间:2019-08-13 08:53:45

标签: json postman mulesoft

我正在尝试在Mule 3.8中编写电子邮件服务。我正在使用邮递员表单数据与文本一起发送附件(文件)。要求是,文本部分的处理应不同于文件的处理。

我已经在for-each循环中编写了Choice组件,并尝试附加文件并尝试使用文本记录当前日志,以后将使用它在电子邮件正文中进行打印。

当前代码存在问题,文本也将作为文本文件附加到电子邮件中。如何避免文本附加到电子邮件?同样在多个jpg文件附件扩展名丢失的情况下。而对于单个文件,它可以正常工作。

我试图在foreach循环中添加选择组件,并尝试仅附加接收到的表单数据的文件部分,并尝试记录文本。文本正在循环登录,但是循环后,两个部分(文件和文本)都已连接到SMTP连接器。

  <foreach collection="#[message.inboundAttachments]" doc:name="Foreach">            


        <logger message="File name:- #[payload.dataSource.part.fileName]  Key name:- #[payload.dataSource.part.name] Content type:- #[payload.dataSource.part.contentType] contents:- #[payload.dataSource.content]." 
         level="INFO" doc:name="Logger"/>

        <choice doc:name="Choice">           
            <when expression="#[payload.dataSource.part.fileName == null]">
                <set-variable variableName="notificationData" value="#[payload.dataSource.content]" doc:name="Variable"/>
                <flow-ref name="testNotificationsSub_Flow" doc:name="testNotificationsSub_Flow"/>
            </when>
            <when expression="#[payload.dataSource.part.fileName != null]">
               <set-attachment attachmentName="#[payload.dataSource.part.fileName]" value="#[payload.dataSource.content]" contentType="image/jpeg" doc:name="Attachment"/>                   
            </when>
        <otherwise>
                <logger message="neither NotificationData nor file #[payload.dataSource.part.name]" level="INFO" doc:name="Logger"/>

        </otherwise>
    </choice>       

    </foreach>

预期的输出是:文件应该被附加,对于文本部分,仅子流应该被执行。文本不是附件,因此不应该附加到电子邮件。 postman may look like below

0 个答案:

没有答案