Как анализировать входящую электронную почту при использовании транспорта Mule IMAP?

Я только начинаю изучать мул, поэтому, пожалуйста, простите меня, если это очень простой вопрос.

Я успешно настроил мула для мониторинга моего почтового ящика, поэтому всякий раз, когда приходит почта, я пишу почту в текстовый файл (только для тестирования).

Теперь мне нужно разобрать эту почту и получить сообщение / From / To от почты.

<flow name="testFlow" doc:name="testFlow">
        <imap:inbound-endpoint host="ip"
            port="143" user="username" password="pwd" doc:name="IMAP"
            responseTimeout="10000" transformer-refs="Message_Properties">
        </imap:inbound-endpoint>
        <file:outbound-endpoint path="C:\"
            outputPattern="#[function:datestamp].dat" doc:name="File">
        </file:outbound-endpoint>
    </flow>

Я думал, что смогу получить информацию заголовка, используя приведенное ниже выражение (используя преобразователь выражений)

#[inboundProperties['email-header-name']] 

но это, похоже, не работает. Я также пробовал следующие выражения, но не работал,

#[map-payload:HOST]
#[map-payload:MESSAGE]
#[map-payload:TIMESTAMP]

Кто-нибудь может помочь? Также кто-нибудь знает, есть ли документ со списком доступных выражений?

РЕДАКТИРОВАТЬ:

Я включил регистратор для просмотра свойств, и он отобразил все свойства, но я не смог найти тело. Кроме того, я попытался получить fromAddress, используя

#[map-payload:fromAddress] and #[inboundProperties['fromAddress']] 

но не сработало, может кто-нибудь дать мне знать, где я ошибаюсь?

Свойства примерно такие, как показано ниже,

inbound.fromAddress=Service <[email protected]> 
inbound.subject=Test Final inbound.toAddresses=Service

Редактировать 2:

Это то, что я пробовал, но не работает :(

Я пытаюсь получить тему электронной почты и записать в файл или просто показать ее с помощью регистратора на основе темы электронной почты, но получаю следующую ошибку.

ERROR 2013-02-07 19:22:45,275 [[test].connector.file.mule.default.dispatcher.01] org.mule.exception.DefaultMessagingExceptionStrategy:
********************************************************************************
Message : Could not find a transformer to transform "SimpleDataType{type=javax.mail.internet.MimeMessage, mimeType='*/*'}" to "SimpleDataType{type=java.io.InputStream, mimeType='*/*'}".
Code : MULE_ERROR-236 

Можете ли вы дать мне знать, где я делаю ошибку?

<flow name="testFlow1" doc:name="testFlow1">
<imap:inbound-endpoint host="ip"
port="143" user="uname" password="pwd" doc:name="IMAP"
responseTimeout="10000" disableTransportTransformer="true">
</imap:inbound-endpoint>
<logger message="#[message.inboundProperties['inbound.fromAddress']]" level="INFO" doc:name="Logger"/>
<choice doc:name="Choice">
<when expression="message.inboundProperties['inbound.subject']=='plain test'">
<processor-chain>
<logger message="#[message.inboundProperties['inbound.fromAddress']]" level="INFO" doc:name="Logger"/>
</processor-chain>
</when>
<otherwise>
<processor-chain>
<file:outbound-endpoint path="C:\mule" outputPattern="#[function:datestamp].dat" responseTimeout="10000" disableTransportTransformer="true" doc:name="File">
</file:outbound-endpoint>
</processor-chain>
</otherwise>
</choice>
</flow>  

person Learner    schedule 07.02.2013    source источник
comment
Используйте #[ ] в своем выражении. Он работает без, но это временный режим обратной совместимости.   -  person David Dossot    schedule 08.02.2013


Ответы (1)


К сожалению, документация по коннектору IMAP не содержит списка созданных свойств сообщений. при получении нового сообщения. Вы можете найти все созданные свойства, добавив:

<logger level="WARN" />

после imap:inbound-endpoint. Это зарегистрирует всю метаинформацию сообщения, включая свойства, на уровне WARN.

Вы также можете найти имена свойств в MailProperties JavaDoc. Например, inbound.fromAddress — это входящее свойство, содержащее адрес электронной почты отправителя.

Тело сообщения представляет собой текстовое содержимое электронной почты, если только оно не состоит из нескольких частей. В этом случае, если первая часть text/plain, она будет установлена ​​как полезная нагрузка сообщения, в противном случае все части будут доступны как вложения входящего сообщения.

person David Dossot    schedule 07.02.2013
comment
Спасибо за ваш ответ. Я включил регистратор для просмотра свойств, и он отобразил все свойства, но не смог найти тело. Кроме того, я попытался получить fromAddress, используя #[map-payload:fromAddress] и #[inboundProperties['fromAddress']], но не не работает, можете ли вы дать мне знать, где я не прав? inbound.fromAddress=Сервис ‹[email protected]› inbound.subject=Окончательный тест inbound.toAddresses=Сервис EDEN - person Learner; 07.02.2013
comment
В своем ответе я переименовал полезную нагрузку в тело, так как уже объяснил, куда идет тело. Используйте: #[message.inboundProperties['inbound.fromAddress']] (изучите MEL здесь mulesoft.org/documentation/display/MULE3USER/MEL+Cheat+Sheet). - person David Dossot; 08.02.2013
comment
Спасибо за вашу помощь ... Документация действительно помогла мне ... Я обновил свой вопрос с обновленным потоком ... Я все еще получаю сообщение об ошибке ... Не могли бы вы помочь мне исправить эту ошибку? - person Learner; 08.02.2013
comment
Удалить disableTransportTransformer="true": это не позволяет Mule извлекать тело письма. - person David Dossot; 08.02.2013