2013-02-07 4 views
1

노새를 배우기 시작한 것이므로 매우 기본적인 질문이라면 용서해주십시오.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] 

은 누군가가 도와 드릴까요, 아래의 표현을 시도했지만 작동하지 않았다? 또한 사용할 수있는 표현식 목록이있는 문서가 있는지 아는 사람이 있습니까?

편집 : 속성을 볼 수있는 로거를 포함 '은 모든 속성을 표시하지만 시체를 찾을 수 couldnt한다 .. 또한, 나는

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

를 사용하여 FROMADDRESS을 받고 시도했지만 didn를

누군가가 내게 어디가 잘못되었는지 알려 줄 수 있습니까?

특성은

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

, 편집이 다음과 같이 있습니다 :이다

나는 시도했지만 나던 일 :(

나는 이메일 제목을 검색하고 쓰기를 시도하고있는 무슨 이메일 제목을 기반으로 로거를 사용하여 파일을 표시하거나 표시하지만 아래 오류가 나타납니다.

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

when 식에서 # []를 사용하십시오.그것은없이 작동하지만 이것은 일시적인 하위 호환 모드입니다. –

답변

4

는 불행하게도 IMAP connector documentation은 새 메시지가 수신 될 때 생성 된 메시지 속성을 나열하지 않습니다. 당신은 추가에 의해 생성 된 모든 속성을 찾을 수 있습니다 imap:inbound-endpoint

<logger level="WARN" /> 

합니다. 이렇게하면 속성을 포함한 모든 메시지 메타 정보가 WARN 수준에 기록됩니다.

MailProperties JavaDoc에서 속성 이름을 찾을 수도 있습니다. 예를 들어 inbound.fromAddress은 보낸 사람의 전자 메일 주소가 들어있는 인바운드 속성입니다.

메시지 본문은 여러 부분으로 구성된 전자 메일이 아닌 한 텍스트 전자 메일 콘텐츠입니다. 이 경우 첫 번째 부분이 text/plain이면 메시지 페이로드로 설정되고 그렇지 않으면 모든 부분이 인바운드 메시지 첨부 파일로 사용 가능하게됩니다.

+0

답장을 보내 주셔서 감사합니다. 나는 로거를 포함하여 속성을 보았지만 모든 속성을 표시했지만 시체를 찾을 수 없었다. 또한 [map-payload : fromAddress] 및 # [inAdded []에서 [fromAddress]]를 사용하여 fromAddress를 얻으려고했다. 하지만 작동하지 않았다, 내가 틀린 곳을 알려주시겠습니까? inbound.fromAddress = Service <[email protected]> inbound.subject = 테스트 최종 inbound.toAddresses = EDEN 서비스 – Learner

+0

내 답변에서 "body"의 이름을 "body"로 변경했습니다. . # [message.inboundProperties [ 'inbound.fromAddress']] (MEL은 http://www.mulesoft.org/documentation/display/MULE3USER/MEL+Cheat+Sheet에서 배우십시오). –

+0

도움을 주셔서 감사합니다 ... 문서가 실제로 도움이되었습니다 ... 업데이트 된 플로우로 내 질문을 업데이트했습니다 ... 여전히 오류가 발생했습니다.이 오류를 해결할 수 있도록 도와 주시겠습니까? – Learner