2012-08-29 4 views
1

전자 메일 메시지를 프로그래밍 방식으로 처리하기 위해 작성된 스프링 통합 프로세스가 있습니다. 그것은 내 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 속성이있는 것 같습니다. 심지어 메일 부분에 도착하기 전에 다음 (우리 datatbase 연결 등) 내부 사이트에 액세스 할 수 있기 때문에스프링 통합을위한 JavaMail 프록시 설정

내가 검토 한

나는 톰캣 setenv.sh-DsocksProxyHost=myproxy.mycompany.com을 설정하려고 못했지만, 내 응용 프로그램 실패 JavaMail API - FAQ 그리고 제대로 설정하고 있다고 생각하지만 시간이 오래갑니다.

누구나 스프링 통합 프로세스를위한 이메일 프록시를 성공적으로 설정 했습니까? 내 봄 통합 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:[email protected]/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> 

솔루션이

빌 섀넌의 응답을 바탕으로, 나는 나의 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> 

난 당신이 모든 SSL을 통한 IMAP에 액세스하려면 "IMAPS"프로토콜을 사용하는 경우 있음을

주 ...는 JavaDocs에서 글씨를 지적하는 것이 중요하다고 생각합니다 속성은 "mail.imaps을. *"라는 것

답변

2

적어도 두 가지 문제가있다 ...

F irst, you don't need the socket factory settings.

두 번째로 imaps 프로토콜을 사용 중이지만 imap 프로토콜의 속성을 설정하고 있습니다.

중 하나는 imapmail.store.protocol로 설정하고 truemail.imap.ssl.enable을 설정하거나 mail.imaps.* 특성 mail.imap.* 모든 속성을 변경.

+0

감사합니다. [이 Gmail 문서] (http://support.google.com/mail/bin/answer.py?hl=ko&answer=78799)를 기반으로 'imaps'SSL 프로토콜을 유지해야한다고 생각합니다. 나는 또한 공장 설정을 꺼낼 것이다. 나는이 사이트의 인터넷 잘라 내기 및 붙여 넣기 설정의 희생자이지만, 배우려고합니다. [com.sun.mail.imap javadocs] (http://javamail.kenai.com/nonav/javadocs/com/sun/mail/imap/package-summary.html)에서는'mail.imap.ssl .enable'의 기본값은 "imap"프로토콜에서는 false이고 "imaps"프로토콜에서는 true이지만, 명시 적으로 설정해 보겠습니다. – GeoGriffin

+0

양말 호스트 나 다른 프록시에'imaps' 설정이 표시되지 않습니다. 'imap.ssl' 설정이 있지만 프록시는 없습니다. 내가 놓친 게 있니? – GeoGriffin

+0

뭔가 빠졌습니다 ... JavaDocs의 작은 글씨 ... "imaps"프로토콜을 사용하여 SSL을 통해 IMAP에 액세스하는 경우 모든 속성의 이름은 "mail.imaps. *"입니다. – GeoGriffin