为Spring Integration设置JavaMail代理

时间:2012-08-29 00:29:32

标签: tomcat proxy javamail spring-integration

我创建了一个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属性。

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

我看过JavaMail API - FAQ并且我认为我正确设置,但它会暂时超时。

是否有人成功设置了Spring Integration流程的电子邮件代理?

我的Spring Integration XML文件中的

Snippet:

<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。*”

1 个答案:

答案 0 :(得分:2)

至少有两个问题......

首先,you don't need the socket factory settings

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

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