我正在尝试在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