2016-03-23 7 views
1

Я использую Spring-integration-email в приложении для загрузки весны, чтобы получать электронные письма. В каждом примере я нашел онлайн-версию xml-конфигурации.Как скрытая конфигурация Spring-integration-email на основе xml для java-конфигурации?

Я использую конфигурацию на основе java в своем приложении, и я хочу использовать ее для электронной почты spring-integration.

Ниже приведена моя конфигурация на основе xml, которая работает правильно. Как я могу преобразовать его в java-конфигурацию?

<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">${imap.debug}</prop> 
</util:properties> 

<mail:inbound-channel-adapter id="imapAdapter" 
           store-uri="${imap.uri}" 
           channel="recieveEmailChannel" 
           should-delete-messages="false" 
           should-mark-messages-as-read="true" 
           auto-startup="true" 
           java-mail-properties="javaMailProperties"> 
    <int:poller fixed-delay="${imap.poolerSecondsDelay}" time-unit="SECONDS"/> 
</mail:inbound-channel-adapter> 

<int:channel id="recieveEmailChannel"> 
    <int:interceptors> 
     <int:wire-tap channel="logger"/> 
    </int:interceptors> 
</int:channel> 

<int:logging-channel-adapter id="logger" level="DEBUG"/> 

<int:service-activator input-channel="recieveEmailChannel" ref="emailReceiverService" method="receive"/> 

<bean id="emailReceiverService" class="com.sts.app.email.service.EmailService"> 
</bean> 
+0

По этой ссылке Спринг загрузки стартера не поддерживают конфигурацию электронной почты на основе Java: http://stackoverflow.com/a/24873590/3226981 Пост выглядит немного старый хотя ..! – Suyash

ответ

0

код вы вывесили (наряду с некоторыми небольшими улучшениями, чтобы сделать его более конфигурируемый) будет преобразован в следующий Java конфигурации:

@Configuration 
public class MailConfig { 

    @Value("${email.host}") 
    private String host; 

    @Value("${email.from}") 
    private String from; 

    @Value("${email.subject}") 
    private String subject; 

    @Bean 
    public JavaMailSender javaMailService() { 
     JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); 
     javaMailSender.setHost(host); 
     return javaMailSender; 
    } 

    @Bean 
    public SimpleMailMessage simpleMailMessage() { 
     SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); 
     simpleMailMessage.setFrom(from); 
     simpleMailMessage.setSubject(subject); 
     return simpleMailMessage; 
    } 
} 

также быстрый взгляд на эту link

+0

отправленный вами код предназначен для отправки электронной почты, а не для получения сообщений электронной почты, как в моей конфигурации xml. – ashishjmeshram

+0

просто проверьте эту ссылку: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-using-jms-receiving, есть некоторая конфигурация для получения почты. –

+0

Я не использую JMS, у меня есть какой-нибудь прослушиватель jms и т. Д. – ashishjmeshram

0
@Bean 
@InboundChannelAdapter(value = "testReceiveEmailChannel", poller = @Poller(fixedDelay = "200000", taskExecutor = "asyncTaskExecutor")) 
public MessageSource<javax.mail.Message> mailMessageSource(MailReceiver mailReceiver) { 
    MailReceivingMessageSource mailReceivingMessageSource = new MailReceivingMessageSource(mailReceiver); 
    // other setters here 
    return mailReceivingMessageSource; 
} 

@Bean 
public MailReceiver imapMailReceiver(@Value("imaps://${login}:${pass}@${host}:993/inbox") storeUrl) { 
    ImapMailReceiver imapMailReceiver = new ImapMailReceiver(storeUrl); 
     // other setters here 
    return imapMailReceiver; 
} 

С интеграцией весны Java DSL может выглядеть так:

@Bean 
    public IntegrationFlow imapMailFlow() { 
     return IntegrationFlows 
       .from(s -> s.imap("imap://user:[email protected]:" + imapPort + "/INBOX") 
           .searchTermStrategy(this::fromAndNotSeenTerm) 
           .javaMailProperties(p -> p.put("mail.debug", "false")), 
         e -> e.autoStartup(true) 
           .poller(p -> p.fixedDelay(1000))) 
       .channel(MessageChannels.queue("imapChannel")) 
       .get(); 
    } 

смотрите также вопрос и обсуждение: spring receive emails without xml (using annotations only)