0

我们有一个 Spring 集成过程,它使用电子邮件 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>

在我的 PC 上运行,我从 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 文件和配置应该是相同的。

我在我的绳索尽头试图追查这个。有没有人经历过这种情况?

4

1 回答 1

0

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

基本问题是当 Grails 创建 WAR 时,它包含几个 servlet 容器的 jar 文件,包括 Geronimo。Geronimo jar 不存在,但在 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

于 2013-11-09T10:45:28.610 回答