Я настраиваю mail: входящий канал-адаптер , используя аннотации Java и ImapIdleChannelAdapter
.
Непонятно, какой тип объекта передать от @InboundChannelAdapter
до @ServiceActivator
.
Фрагмент кода:
@InboundChannelAdapter(value = "inputChannel", poller = @Poller(fixedDelay = "5000"))
public ImapIdleChannelAdapter getMailAdapter() {
ImapMailReceiver mailReceiver = new ImapMailReceiver("imaps://username:password@map-mail.outlook.com:993/INBOX");
...
return new ImapIdleChannelAdapter(mailReceiver);
}
@ServiceActivator(inputChannel = "inputChannel")
public void readMessage(Message<javax.mail.Message> message) {
System.out.println(message.getPayload().getAllRecipients());
}
ImapIdleChannelAdapter
источник говорит, что "полезная нагрузка сообщения будет полученным экземпляром javax.mail.Message". Тем не менее, я получаю исключение приведения класса ImapIdleChannelAdapter cannot be cast to javax.mail.Message
при выполнении кода выше.
Если я изменю аргумент метода SA на javax.mail.Message, я получу spel.SpelEvaluationException: EL1004E: Method call cannot be found on .. type
@ServiceActivator(inputChannel = "inputChannel")
public void readMessage(javax.mail.Message message) throws MessagingException {
System.out.println(message.getAllRecipients());
}