2

我创建了一个 Spring Integration 流程来以编程方式处理电子邮件。它在我的 IDE 中运行良好,但是当我将它部署到我们的 Tomcat Unix 服务器时失败。我正在运行 JDK 1.6.0.4、Tomcat 7.0.29、Grails 2.0.4、Spring Integration 2.1.3 和 JavaMail 1.4.5。我试图弄清楚如何配置代理设置以便我可以运行它。我看过 2010 年的帖子说这是不可能的,但现在看起来有 JavaMail 属性。

我确实尝试-DsocksProxyHost=myproxy.mycompany.com在 Tomcat 中进行设置setenv.sh,但我的应用程序在到达邮件部分之前就失败了,因为它无法访问内部站点(比如我们的数据库连接)

我查看了JavaMail API - FAQ并且我认为我设置正确,但它一直超时。

有没有人为 Spring Integration 流程成功设置了电子邮件代理?

我的 Spring Integration XML 文件中的片段:

<util:properties id="javaMailProperties">
    <prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
    <prop key="mail.imap.socketFactory.fallback">false</prop>
    <prop key="mail.store.protocol">imaps</prop>
    <prop key="mail.debug">true</prop>
    <prop key="mail.smtp.socks.host">socksproxy.mycompany.com</prop>
    <prop key="mail.smtp.socks.port">1080</prop>
    <prop key="mail.imap.socks.host">socksproxy.mycompany.com</prop>
    <prop key="mail.imap.socks.port">1080</prop>
</util:properties>

<mail:inbound-channel-adapter id="imapAdapter"
                              store-uri="imaps://myEmailAddress:myPassword@imap.gmail.com/INBOX"
                              java-mail-properties="javaMailProperties"
                              channel="receiveEmailChannel"
                              should-delete-messages="false"
                              should-mark-messages-as-read="true"
                              auto-startup="true">
    <int:poller max-messages-per-poll="1" fixed-rate="15" time-unit="SECONDS">
    </int:poller>
</mail:inbound-channel-adapter>

解决方案

根据 Bill Shannon 的回复,我将我的更新javaMailProperties为下面的代码片段,一切都按预期工作。

<util:properties id="javaMailProperties">
    <prop key="mail.store.protocol">imaps</prop>
    <prop key="mail.imap.ssl.enable">true</prop>
    <prop key="mail.debug">true</prop>
    <prop key="mail.imaps.socks.host">socksproxy.mycompany.com</prop>
    <prop key="mail.imaps.socks.port">1080</prop>
</util:properties>

我认为指出JavaDocs中的细则很重要......

请注意,如果您使用“imaps”协议通过 SSL 访问 IMAP,则所有属性都将命名为“mail.imaps.*”

4

1 回答 1

3

至少有两个问题...

首先,您不需要套接字出厂设置

其次,您正在使用imaps协议,但为协议设置属性imap

设置mail.store.protocolimap并设置mail.imap.ssl.enabletrue,或将所有mail.imap.*属性更改为mail.imaps.*属性。

于 2012-08-29T01:11:12.247 回答