Mule ESB:使用IMAP连接器从Gmail检索电子邮件

时间:2012-01-12 14:18:29

标签: gmail imap mule gmail-imap

我是Mule的新手,我正在尝试创建一个Mule配置,通过imap从GMail帐户中提取已发送的电子邮件,并将它们推送到php脚本,该脚本处理并将它们存储在我构建的自定义CRM中。 对于初学者来说,我只是想将收件箱电子邮件转储到文本文件中,我打算从那里开始工作。

当邮箱收到新邮件时,Mule应该收到新邮件并自动处理。

到目前为止,Mule配置看起来像这样:

<imaps:connector name="IMAP" mailboxFolder="INBOX" validateConnections="false" doc:name="IMAP" />
<flow name="flows1Flow1" doc:name="flows1Flow1">
    <imaps:inbound-endpoint host="imap.gmail.com" port="993" user="[[username]]%40gmail.com" password="[[password]]" connector-ref="IMAP" doc:name="IMAP"/>
   <file:outbound-endpoint path="D:\mailflow" outputPattern="msg_#[function:date].txt" doc:name="File"/>
</flow>

程序运行并达到这一点:

    INFO  2012-01-12 13:51:06,606 [main] org.mule.DefaultMuleContext: 
    **********************************************************************
    * Application: mailflow                                     *
    * OS encoding: Cp1252, Mule encoding: UTF-8                          *
    *                                                                    *
    * Agents Running:                                                    *
    *   JMX Agent                                                        *
    **********************************************************************
    INFO  2012-01-12 13:51:06,606 [main] org.mule.module.launcher.DeploymentService: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Started app 'mailflow'                          +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

然后只是无限期地坐在那里,什么都不做?!

有文档建议,因为我正在使用IMAPS,我需要将一个TLS客户端和TLS密钥库添加到imaps连接器。我不确定这些是什么或如何使用它们,文档是高度专业化和难以理解的。 我也不确定问题出在首位,因为应用程序在任何时候都不会崩溃。

有没有人成功创建了一个使用GMail的imap流程? 请帮忙?!

5 个答案:

答案 0 :(得分:1)

只需创建如下连接器:

<imaps:connector name="IMAP">
   <imaps:tls-client/>
   <imaps:tls-trust-store/>
</imaps:connector>

这应该可以解决问题。 另外,我删除了&#34; @ gmail&#34;根据用户的定义,因为没有必要。

再见!

德国

答案 1 :(得分:1)

只需输入一个*,你就不会看到错误,并且仍能正常工作。

    <imaps:tls-client path="*" storePassword="*"/>
    <imaps:tls-trust-store path="*" storePassword="*"/>

答案 2 :(得分:0)

您必须将imap:connectorimap:inbound-endpoint更改为imaps:connectorimaps:inbound-endpoint

这对我来说很好。我发布了同样的内容,现在通过这个小小的改动来修复它。

答案 3 :(得分:0)

仅将未删除和未读的消息作为消息分派(RetrieveMessageReceiver.java:148和149)

if (!messages[i].getFlags().contains(Flags.Flag.DELETED)
     && !messages[i].getFlags().contains(Flags.Flag.SEEN))

如果文件夹很大,则需要一些时间(甚至可能是数小时)来处理未读消息。

答案 4 :(得分:0)

Settings for the IMAP

使用应用密码 https://security.google.com/settings/security/apppasswords 最后使用正确的路径保存邮件。