我创建了一个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。*”
答案 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.*
属性。