Mule ESB 3.3 - Receiving IMAPS mail (Gmail)

匿名 (未验证) 提交于 2019-12-03 03:04:01

问题:

Anyone has a working example of reading mails from IMAP over SSL (IMAPS) from Gmail?

Some info I have gathered, but without any success:

The thing just sits there doing nothing.

Here is my flow:

<mule> <imaps:connector         name="imapsConnector"         checkFrequency="5000"         backupEnabled="true"         mailboxFolder="INBOX"         deleteReadMessages="false"         doc:name="IMAP">         <imaps:tls-client />         <imaps:tls-trust-store />     </imaps:connector>      <expression-transformer         name="returnAttachments"         doc:name="Expression">         <return-argument             evaluator="attachments-list"             expression="*.csv" />     </expression-transformer>      <flow         name="GmailImapsFetch"         doc:name="Flow1_IMAP_fetch">         <imaps:inbound-endpoint             user="your_username%40gmail.com"             password="your_password"             host="imap.googlemail.com"             port="993"             transformer-refs="returnAttachments"             disableTransportTransformer="true"             doc:name="IMAP"             connector-ref="imapsConnector"             responseTimeout="10000" />         <!-- <collection-splitter doc:name="Collection Splitter" /> -->         <logger message="#[payload]" />         <file:outbound-endpoint             path="/tmp/gmail-#[function:datestamp].dat"             doc:name="File">             <expression-transformer>                 <return-argument                     expression="payload.inputStream"                     evaluator="groovy" />             </expression-transformer>         </file:outbound-endpoint>      </flow> </mule> 

Mule Studio (1.3.2) complains that the XML is malformed (it doesn't like the expression-transformer thingie), but it doesn't complain at runtime.

Anyone has this running?

Thanks.

--

Log:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Starting app 'mulelab'                                   + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [23-01-13 11:07:01] [DEBUG] Applying lifecycle phase: org.mule.lifecycle.phases.MuleContextStartPhase@14b03ea for registry: DefaultRegistryBroker [23-01-13 11:07:01] [DEBUG] lifecycle phase: start for object: org.mule.util.queue.TransactionalQueueManager@63edf84f [23-01-13 11:07:01] [ INFO] Starting ResourceManager [23-01-13 11:07:01] [DEBUG] Restore retrieved 0 objects [23-01-13 11:07:01] [DEBUG] Restore retrieved 0 objects [23-01-13 11:07:01] [DEBUG] Restore retrieved 0 objects [23-01-13 11:07:01] [ INFO] Started ResourceManager [23-01-13 11:07:01] [DEBUG] lifecycle phase: start for object: FileConnector . . .    [23-01-13 11:07:01] [DEBUG] lifecycle phase: start for object: ImapsConnector {   name=imapsConnector   lifecycle=initialise   this=4bb4df9c   numberOfConcurrentTransactedReceivers=4   createMultipleTransactedReceivers=true   connected=false   supportedProtocols=[imaps]   serviceOverrides=<none> }  [23-01-13 11:07:01] [DEBUG] Connecting: ImapsConnector {   name=imapsConnector   lifecycle=initialise   this=4bb4df9c   numberOfConcurrentTransactedReceivers=4   createMultipleTransactedReceivers=true   connected=false   supportedProtocols=[imaps]   serviceOverrides=<none> }  [23-01-13 11:07:01] [ INFO] Connected: ImapsConnector {   name=imapsConnector   lifecycle=initialise   this=4bb4df9c   numberOfConcurrentTransactedReceivers=4   createMultipleTransactedReceivers=true   connected=true   supportedProtocols=[imaps]   serviceOverrides=<none> }  [23-01-13 11:07:01] [ INFO] Starting: ImapsConnector {   name=imapsConnector   lifecycle=initialise   this=4bb4df9c   numberOfConcurrentTransactedReceivers=4   createMultipleTransactedReceivers=true   connected=true   supportedProtocols=[imaps]   serviceOverrides=<none> }  [23-01-13 11:07:01] [ INFO] Starting connector: imapsConnector [23-01-13 11:07:01] [DEBUG] Successfully connected to ImapsConnector {   name=imapsConnector   lifecycle=initialise   this=4bb4df9c   numberOfConcurrentTransactedReceivers=4   createMultipleTransactedReceivers=true   connected=false   supportedProtocols=[imaps]   serviceOverrides=<none> }  [23-01-13 11:07:01] [DEBUG] lifecycle phase: start for object: org.mule.transport.servlet.jetty.JettyWebappServerAgent@26945b95 [23-01-13 11:07:01] [DEBUG] lifecycle phase: start for object: org.mule.module.management.agent.JmxAgent@320f6398 [23-01-13 11:07:01] [DEBUG] lifecycle phase: start for object: SedaModel{_muleSystemModel} [23-01-13 11:07:01] [ INFO] Starting model: _muleSystemModel [23-01-13 11:07:01] [DEBUG] lifecycle phase: start for object: Flow{GmailImapsFetch} [23-01-13 11:07:01] [ INFO] Starting flow: GmailImapsFetch [23-01-13 11:07:01] [ INFO] Starting service: GmailImapsFetch.stage1 [23-01-13 11:07:01] [ INFO] Registering listener: GmailImapsFetch on endpointUri: imaps://your_username%40gmail.com:****@imap.googlemail.com:993 [23-01-13 11:07:01] [ INFO] Loading default inbound transformer: org.mule.transport.email.transformers.EmailMessageToString [23-01-13 11:07:01] [DEBUG] Setting transformer name to: EmailMessageToString#1868577756 [23-01-13 11:07:01] [ INFO] Initialising: 'null'. Object is: RetrieveMessageReceiver [23-01-13 11:07:01] [DEBUG] Connecting: RetrieveMessageReceiver{this=22fe135d, receiverKey=your_username@gmail.com, endpoint=imaps://your_username%40gmail.com:****@imap.googlemail.com:993} [23-01-13 11:07:01] [ INFO] Connecting clusterizable message receiver [23-01-13 11:07:01] [DEBUG] No Authenticator set on connector: imapsConnector; using default. [23-01-13 11:07:01] [ INFO] Defaulting mule.email.imaps trust store to client Key Store [23-01-13 11:07:01] [DEBUG] MuleSession local properties ============= [23-01-13 11:07:01] [DEBUG] mail.imaps.ssl: true [23-01-13 11:07:01] [DEBUG] mail.debug: true [23-01-13 11:07:01] [DEBUG] mail.imaps.socketFactory.class: org.mule.transport.email.ImapsSocketFactory [23-01-13 11:07:01] [DEBUG] mail.imaps.socketFactory.fallback: false [23-01-13 11:07:01] [DEBUG] mail.imap.host: imap.googlemail.com [23-01-13 11:07:01] [DEBUG] mail.imap.auth: true [23-01-13 11:07:01] [DEBUG] mail.imap.socketFactory.port: 993 [23-01-13 11:07:01] [DEBUG] mail.imap.rsetbeforequit: true [23-01-13 11:07:01] [DEBUG] skipped 0 [23-01-13 11:07:01] [DEBUG] System global properties ============= [23-01-13 11:07:01] [DEBUG] mule.home: /home/pakmans/workspace/.mule [23-01-13 11:07:01] [DEBUG] mule.encoding: UTF-8 [23-01-13 11:07:01] [DEBUG] skipped 57 [23-01-13 11:07:01] [DEBUG] Creating mail session: host = imap.googlemail.com, port = 993, user = your_username@gmail.com, pass = ******** [23-01-13 11:07:01] [DEBUG] creating: true; mule.email.imaps [23-01-13 11:07:01] [DEBUG] creating factory [23-01-13 11:07:01] [ INFO] Using org.mule.api.security.provider.SunSecurityProviderInfo [23-01-13 11:07:01] [DEBUG] mule.email.imaps.ssl.trustStore -> null [23-01-13 11:07:01] [DEBUG] mule.email.imaps.ssl.trustStoreType -> jks [23-01-13 11:07:01] [DEBUG] mule.email.imaps.ssl.trustStorePassword -> null [23-01-13 11:07:01] [DEBUG] mule.email.imaps.ssl.trustManagerAlgorithm -> SunX509 [23-01-13 11:07:01] [DEBUG] mule.email.imaps.ssl.keyStore -> .keystore [23-01-13 11:07:01] [DEBUG] Unable to load resource from the file system: /home/pakmans/workspace/mulelab/.keystore [23-01-13 11:07:01] [DEBUG] Unable to load resource .keystore from the classpath [23-01-13 11:07:01] [DEBUG] Normalised keyStore path to: null [23-01-13 11:07:01] [DEBUG] mule.email.imaps.ssl.keyStoreType -> jks [23-01-13 11:07:01] [DEBUG] mule.email.imaps.ssl.keyStorePassword -> null [23-01-13 11:07:01] [DEBUG] initialising: anon true [23-01-13 11:07:01] [ INFO] Defaulting mule.email.imaps trust store to client Key Store [23-01-13 11:07:03] [DEBUG] Connected: imaps://your_username%40gmail.com:****@imap.googlemail.com:993 [23-01-13 11:07:03] [ INFO] Starting: 'null'. Object is: RetrieveMessageReceiver [23-01-13 11:07:03] [ INFO] Starting clusterizable message receiver [23-01-13 11:07:03] [DEBUG] RetrieveMessageReceiver@22fe135d scheduled ScheduledThreadPoolExecutor$ScheduledFutureTask@6fa37fac with 5000 MILLISECONDS polling frequency [23-01-13 11:07:03] [DEBUG] lifecycle phase: start for object: DefaultInboundEndpoint{endpointUri=imaps://your_username%40gmail.com:<password>@imap.googlemail.com, connector=ImapsConnector {   name=imapsConnector   lifecycle=start   this=4bb4df9c   numberOfConcurrentTransactedReceivers=4   createMultipleTransactedReceivers=true   connected=true   supportedProtocols=[imaps]   serviceOverrides=<none> } ,  name='endpoint.imaps.your_username.gmail.com', mep=ONE_WAY, properties={}, transactionConfig=Transaction{factory=null, action=INDIFFERENT, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=true} [23-01-13 11:07:03] [DEBUG] lifecycle phase: start for object: org.mule.DefaultMuleContext@6a9effe0 [23-01-13 11:07:03] [ INFO] Reload interval: 3000 [23-01-13 11:07:03] [DEBUG] org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'wrapper-manager' is defined [23-01-13 11:07:03] [DEBUG] registering key/object wrapper-manager/org.mule.module.management.agent.WrapperManagerAgent@4c825cf3 [23-01-13 11:07:03] [DEBUG] applying processors [23-01-13 11:07:03] [DEBUG] applying lifecycle to object: org.mule.module.management.agent.WrapperManagerAgent@4c825cf3 [23-01-13 11:07:03] [ INFO] This JVM hasn't been launched by the wrapper, the agent will not run. [23-01-13 11:07:03] [DEBUG] Registering statistics with name: Mule.mulelab:type=Statistics,name=AllStatistics [23-01-13 11:07:03] [DEBUG] Registering mule with name: Mule.mulelab:name=MuleContext [23-01-13 11:07:03] [DEBUG] Registering configuration with name: Mule.mulelab:name=Configuration [23-01-13 11:07:03] [DEBUG] Registering model with name: Mule.mulelab:type=Model,name="_muleSystemModel(seda)" [23-01-13 11:07:03] [DEBUG] Registering service with name: Mule.mulelab:type=Flow,name="GmailImapsFetch" [23-01-13 11:07:03] [DEBUG] org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'endpoint.imaps.your_username.gmail.com' is defined [23-01-13 11:07:03] [ INFO] Attempting to register service with name: Mule.mulelab:type=Endpoint,service="GmailImapsFetch",connector=imapsConnector,name="endpoint.imaps.your_username.gmail.com" [23-01-13 11:07:03] [ INFO] Registered Endpoint Service with name: Mule.mulelab:type=Endpoint,service="GmailImapsFetch",connector=imapsConnector,name="endpoint.imaps.your_username.gmail.com" [23-01-13 11:07:03] [DEBUG] org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'connector.file.mule.default.1' is defined [23-01-13 11:07:03] [DEBUG] Attempting to register service with name: Mule.mulelab:type=Connector,name="connector.file.mule.default.1" [23-01-13 11:07:03] [ INFO] Registered Connector Service with name Mule.mulelab:type=Connector,name="connector.file.mule.default.1" [23-01-13 11:07:03] [DEBUG] org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'imapsConnector.1' is defined [23-01-13 11:07:03] [DEBUG] Attempting to register service with name: Mule.mulelab:type=Connector,name="imapsConnector.1" [23-01-13 11:07:03] [ INFO] Registered Connector Service with name Mule.mulelab:type=Connector,name="imapsConnector.1" [23-01-13 11:07:03] [DEBUG] Registering application statistics with name: Mule.mulelab:type=Application,name="application totals" [23-01-13 11:07:03] [ INFO]  ********************************************************************** * Application: mulelab                                               * * OS encoding: UTF-8, Mule encoding: UTF-8                           * *                                                                    * * Agents Running:                                                    * *   JMX Agent                                                        * ********************************************************************** [23-01-13 11:07:03] [ INFO]  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Started app 'mulelab'                                    + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

回答1:

I'm going to risk an answer :$

According to the IMAP's connector doc, it seems your config misses an attribute that is recommended with GMail:

moveToFolder The remote folder to move mail to once it has been read. It is recommended that 'deleteReadMessages' is set to false when this is used. This is very useful when working with public email services such as GMail where marking messages for deletion doesn't work. Instead set the @moveToFolder=[GMail]/Trash.

Can you give it a try?

(Edited: [Gmail] has to be surrounded by brackets)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!