2

電子メールメッセージをプログラムで処理するために作成されたSpringIntegrationプロセスがあります。IDEからは正常に動作しますが、TomcatUnixサーバーにデプロイすると失敗します。JDK 1.6.0.4、Tomcat 7.0.29、Grails 2.0.4、Spring Integration 2.1.3、およびJavaMail1.4.5を実行しています。これを実行できるようにプロキシ設定を構成する方法を理解しようとしています。2010年からは不可能だという投稿を見てきましたが、現在はJavaMailのプロパティがあるようです。

-DsocksProxyHost=myproxy.mycompany.comTomcatで設定しようとしまし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

少なくとも2つの問題があります...

まず、ソケットの工場出荷時の設定は必要ありません

次に、imapsプロトコルを使用していますが、プロトコルのプロパティを設定していimapます。

に設定mail.store.protocolしてimapに設定mail.imap.ssl.enableするtrueか、すべてのmail.imap.*プロパティをmail.imaps.*プロパティに変更します。

于 2012-08-29T01:11:12.247 に答える