2016-03-23 34 views
1
enter org.springframework.meption is javax.mail.NoSuchProviderException: imap 
    at org.springframework.integration.mail.MailReceivingMessageSource.receive(MailReceivingMessageSource.java:125) 
    at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:175 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:224) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.access$000(AbstractPollingEndpoint.java:57) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:176) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:173) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:330) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:55) 
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:51) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller.run(AbstractPollingEndpoint.java:324) 
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:483) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:316) 
    at org.springframework.scheduling.commonj.TimerManagerTaskScheduler$TimerScheduledFuture.timerExpired(TimerManagerTaskSched 
    at org.springframework.scheduling.commonj.TimerManagerTaskScheduler$ReschedulingTimerListener.timerExpired(TimerManagerTask 
    at com.ibm.ws.asynchbeans.timer.TimerImpl.callListenerMethod(TimerImpl.java:361) 
    at com.ibm.ws.asynchbeans.timer.GenericTimer.run(GenericTimer.java:228) 
    at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:267) 
    at java.security.AccessController.doPrivileged(AccessController.java:390) 
    at javax.security.auth.Subject.doAs(Subject.java:494) 
    at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:133) 
    at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:91) 
    at com.ibm.ws.asynchbeans.J2EEContext$DoAsProxy.run(J2EEContext.java:338) 
    at java.security.AccessController.doPrivileged(AccessController.java:420) 
    at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1174) 
    at com.ibm.ws.asynchbeans.timer.TimerImpl.runListenerAsCJWork(TimerImpl.java:490) 
    at com.ibm.ws.asynchbeans.am._Alarm.fireAlarm(_Alarm.java:340) 
    at com.ibm.ws.asynchbeans.am._Alarm.run(_Alarm.java:237) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881) 
Caused by: javax.mail.NoSuchProviderException: imap 
    at javax.mail.Session.getService(Session.java:798) 
    at javax.mail.Session.getStore(Session.java:578) 
    at javax.mail.Session.getStore(Session.java:540) 
    at org.springframework.integration.mail.AbstractMailReceiver.connectStoreIfNecessary(AbstractMailReceiver.java:239) 
    at org.springframework.integration.mail.AbstractMailReceiver.openFolder(AbstractMailReceiver.java:259) 
    at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:285) 
    at org.springframework.integration.mail.MailReceivingMessageSource.receive(MailReceivingMessageSource.java:111) 
    ... 29 morecode here 

我可以ping遠程服務器ip,因此沒有連接問題。 我可以在tomcat中運行相同的代碼,並且工作正常。 當我將它部署在web球體中時,相同的代碼給了我上述錯誤。 在堆棧溢出嘗試其他的東西沒有工作。 罐子是activation-1.1.jar,mail-1.4.5.jar。 任何指針都有幫助。獲取javax.mail.NoSuchProviderException:嘗試輪詢郵件服務器時的imap

+0

plase提供您的代碼片段... – Marcx

+0

其連接使用彈簧集成http://docs.spring.io/spring-integration/reference/html/mail.html .... – user666

+0

如果可以,更新你的[JavaMail](https://java.net/projects/javamail/pages/Home)到版本1.5.3或更高版本。請參閱:[跳過不可用的商店和運輸類](https://kenai.com/bugzilla/show_bug.cgi?id=6668)。如果這不起作用,請提供JavaMail調試輸出。 – jmehrens

回答

1

那麼,在我們的測試中,我們使用這個搖籃依存關係郵件適配器:

mailVersion = '1.5.5' 

testRuntime "com.sun.mail:javax.mail:$mailVersion" 
testRuntime "com.sun.mail:smtp:$mailVersion" 
testRuntime "com.sun.mail:pop3:$mailVersion" 
testRuntime "com.sun.mail:imap:$mailVersion" 

因此,考慮到加com.sun.mail:imap:1.5.5爲您的項目。

0

感謝這些回答和評論肯定有幫助。

起初,我用下面的代碼: -

<dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>javax.mail-api</artifactId> 
     <version>1.5.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.mail</groupId> 
     <artifactId>javax.mail</artifactId> 
     <version>1.5.3</version> 
    </dependency> 

這解決了IMAP提供的問題。所有的工作在當地,但是當我部署在WebSphere上的代碼我正在類轉換異常

caused by: java.lang.ClassCastException: com.sun.mail.handlers.text_plain incompatible with javax.activation.DataContentHandler 

即使text_plain從DataContenHandler延伸,但保留在抱怨不同的類,它告訴它是越來越加載其他地方。然後排除激活罐如下,以使其工作

<dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>javax.mail-api</artifactId> 
     <version>1.5.3</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>activation</artifactId> 
       <groupId>javax.activation</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.mail</groupId> 
     <artifactId>javax.mail</artifactId> 
     <version>1.5.3</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>activation</artifactId> 
       <groupId>javax.activation</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

謝謝你們。

+0

com.sun.mail:javax.mail工件包含所有imap,smtp和pop3的提供程序,因此您不需要單獨的jar文件。它還包含完整的API定義,因此您不需要javax.mail-api工件。這些工件在[JavaMail網頁](https://java.net/projects/javamail/pages/Home)上描述。 –