Mule下载电子邮件正文和附件

Mule下载电子邮件正文和附件,mule,email-attachments,pop3,Mule,Email Attachments,Pop3,如何让Mule使用pop3下载附件?我试着尽可能地遵循示例,但我一直得到两个文件:一个是电子邮件正文,另一个是实际附件。以下是我使用的流程: <pop3:connector name="pop3Connector" checkFrequency="5000" doc:name="POP3"/> <expression-transformer name="returnAttachments" doc:name="Expression"> <return-ar

如何让Mule使用pop3下载附件?我试着尽可能地遵循示例,但我一直得到两个文件:一个是电子邮件正文,另一个是实际附件。以下是我使用的流程:

<pop3:connector name="pop3Connector" checkFrequency="5000" doc:name="POP3"/>

<expression-transformer name="returnAttachments" doc:name="Expression">
    <return-argument evaluator="attachments-list" expression="*" />
</expression-transformer>

<file:connector name="fileName" doc:name="File">
    <file:expression-filename-parser/>
</file:connector>

<flow name="incoming-orders" doc:name="incoming-orders">
    <pop3s:inbound-endpoint host="pop.gmail.com" port="995" user="myuser%40mydomain" password="mypassword" responseTimeout="10000" doc:name="POP3" transformer-refs="returnAttachments" />
    <collection-splitter doc:name="Collection Splitter"/>
    <file:outbound-endpoint path="C:/popthreetest" outputPattern="#[function:datestamp].dat" doc:name="File">
        <expression-transformer>
            <return-argument expression="payload.inputStream" evaluator="groovy" />
        </expression-transformer>
    </file:outbound-endpoint>                   
</flow>
为完整起见,以下是JSON文件:

{
    "attachment-name.txt": [
        "C:/popthreetest/firstDestination.txt"
      , "C:/path/to/secondDestination.txt"
      , "C:\\popthreetest\\destination\\using-backslashes.txt"
    ]
}

带有附件的电子邮件是由多个部分组成的电子邮件,其中附件既是部分,也是正文。因此,Mule只能下载“整个软件包”,并将不同的部分提供给您

您应该能够根据零件名称在
集合拆分器之后过滤车身零件


或者,您可以使用MEL表达式删除集合的第一个元素,这通常是主体(Mule在内部使用此技术设置消息负载:)

如果我检查message.payload.dataSource.name是否为null,这是否足够?也就是说,可能有一些东西不是也有名称的附件吗?我实际上是在检查带有特定名称的附件,所以我认为这不会影响我,但将来阅读此答案的其他人可能会想知道。
{
    "attachment-name.txt": [
        "C:/popthreetest/firstDestination.txt"
      , "C:/path/to/secondDestination.txt"
      , "C:\\popthreetest\\destination\\using-backslashes.txt"
    ]
}