Spring集成 - 属性'should-delete-messages'不允许出现在元素'mail:inbound-channel-adapter'中

时间:2012-12-19 07:58:29

标签: spring spring-integration

我使用spring集成来检索使用imap的电子邮件以下是我的配置:我使用的是spring-integration版本1.0.4.RELEASE,我坚持使用这个版本,因为我的spring版本是2.5,我不想要改变(将付出很大的努力)。

问题 如果我在inbound-channel-adapter中放入以下任何属性,那么我将收到以下异常。 应该-删除的消息=“假” 应该标记的消息,作为读取=“真”

线程“main”org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException中的异常:来自类路径资源[META-INF / spring / component.xml]的XML文档中的第125行无效;嵌套异常是org.xml.sax.SAXParseException:cvc-complex-type.3.2.2:属性'should-delete-messages'不允许出现在元素'mail:inbound-channel-adapter'中。

每当我处理电子邮件时,相应的电子邮件都会从Outlook邮箱中删除。版本1.0.4中是否不支持此属性?如果是,那么如何实现类似的功能呢?

<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">false</prop>
</util:properties>

<mail:inbound-channel-adapter id="imapAdapter"
                                  store-uri="imaps://username:password@mydomain:993/inbox"                                    
                                  channel="recieveEmailChannel"
                                  auto-startup="true"
                                  java-mail-properties="javaMailProperties">
    <int:poller> 
    <int:interval-trigger initial-delay="1000" interval="2000"
    fixed-rate="true"/>
    </int:poller>
</mail:inbound-channel-adapter>
<int:channel id="recieveEmailChannel" />        
<int:service-activator input-channel="recieveEmailChannel" ref="emailReceiverService" method="receive"/>
<bean id="emailReceiverService" class="com.mydomain.email.in.DefaultEmailReceiverUtilService">
</bean>

1 个答案:

答案 0 :(得分:1)

使用imap-idle-channel-adapter而不是inbound-channel-adapter解决,如下所示:

<mail:imap-idle-channel-adapter id="imapAdapter"
                                  store-uri="imaps://username:password@mydomain:993/inbox"                                    
                                  channel="recieveEmailChannel"
                                  should-delete-messages="false"
                                  auto-startup="true"
                                  java-mail-properties="javaMailProperties" />