使用错误用户的Spring Integration Mail适配器

时间:2013-11-07 01:24:06

标签: java spring grails javamail

我们有一个Spring Integration流程,它使用Email Adpater以编程方式阅读来自GMail帐户的电子邮件。当它在我的本地PC上运行时,一切运行正常。当我们将它部署到我们的Linux服务器(Linux 2.6.32-279.11.1.el6.x86_64)时,相同的配置看起来就像使用运行应用程序的服务器帐户而不是Spring中配置的参数。

我们正在尝试连接 mail.account@gmail.com

<mail:imap-idle-channel-adapter id="customAdapter"
      store-uri="imaps://mail.account:password@imap.gmail.com/INBOX"
      java-mail-properties="javaMailProperties"
      channel="receiveEmailChannel"
      should-delete-messages="false"
      should-mark-messages-as-read="true"
      auto-startup="true">
</mail:imap-idle-channel-adapter>

在我的电脑上运行,我从mail.debug日志中获得以下内容。请注意,该用户是 mail.account

A0 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN
A0 OK Thats all she wrote! y4if3012170qcp.27
DEBUG IMAP: AUTH: XOAUTH
DEBUG IMAP: AUTH: XOAUTH2
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: AUTH: PLAIN-CLIENTTOKEN
DEBUG: protocolConnect login, host=imap.gmail.com, user=mail.account, password=<non-null>
A1 AUTHENTICATE PLAIN

在Linux上运行,我从mail.debug日志中获得以下内容。请注意,该用户是 server.account

DEBUG: trying to connect to host "imap.gmail.com", port 993, isSSL true
* OK Gimap ready for requests from 999.999.9.999 u6if3552599icy.8
A0 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN
A0 OK Thats all she wrote! u6if3552599icy.8
DEBUG IMAP: AUTH: XOAUTH
DEBUG IMAP: AUTH: XOAUTH2
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: AUTH: PLAIN-CLIENTTOKEN
DEBUG: protocolConnect login, host=imap.gmail.com, user=server.account, password=<non-null>
DEBUG IMAP: AUTHENTICATE PLAIN command trace suppressed
DEBUG IMAP: AUTHENTICATE PLAIN command result: A1 NO Invalid credentials u6if3552599icy.8

这是一个Grails应用程序,我们有一个构建管理系统来进行构建和部署,所以我相信jar文件和配置应该是相同的。

我在绳子的尽头试图追踪它。以前有人经历过这个吗?

1 个答案:

答案 0 :(得分:0)

这最终成为Grails包装和战争分配的问题。我们的最终解决方案还需要更多的工作和调查,但我认为这可能会成为一个单独的StackOverflow问题。

基本问题是当Grails创建WAR时,它包含几个servlet容器的jar文件,包括Geronimo。 Geronimo罐子不存在,但是在WAR包中。对于已部署的WAR版本,我们停止了该应用,转到WEB-INF/lib并移除了geronimo-javamail_1.4_spec-1.7.1.jar,然后重新启动了该应用。现在一切都很好。 Geronimo中的身份验证必须不同/已损坏。

现在我们只需要了解如何从我们的发行版中排除Geronimo jar。


最后的罪魁祸首是ws-client中包含的application.properties插件。删除后,我们不再在项目中包含任何geronimo-*.jar个文件。

plugins.ws-client=1.0