Я использую этот код для чтения почты с сервера IMAP:
@EnableIntegration
public class MailIntegration implements HasLogger {
@Bean
public ImapIdleChannelAdapter messageChannel(ImapMailReceiver receiver) {
var receiver = new ImapMailReceiver("imaps://...");
var adapter = new ImapIdleChannelAdapter(receiver);
adapter.setOutputChannelName("imapChannel");
return adapter;
}
@ServiceActivator(inputChannel = "imapChannel")
public void handleMessage(MimeMessage message) {
getLogger().info("Got message!");
var subject = message.getSubject();
getLogger().info("Subject: {}", subject);
var contentType = message.getContentType();
getLogger().info("ContentType: {}", contentType);
var content = message.getContent();
if (content instanceof String) {
var text = (String) content;
getLogger().info("Content: {}", text);
getLogger().info("Length: {}", text.length());
} else {
getLogger().info("Other content: {}", content);
}
}
}
Если я отправляю электронное письмо в формате обычного текста, включается обработчик, и он записывает:
INFO : Got message!
INFO : Subject: Lorem ipsum dolor sit amet
INFO : ContentType: text/plain; charset="utf-8"
INFO : Content:
INFO : Length: 0
Если я отправляю электронное письмо в формате HTML, включается обработчик и регистрируется:
INFO : Got message!
INFO : Subject: Lorem ipsum dolor sit amet
INFO : ContentType: text/html; charset="utf-8"
INFO : Content:
INFO : Length: 0
Тема правильная (как и заголовки), но содержимое всегда пустое для простого и HTML электронногоотправляет по почте оба.
Кроме того, я ожидал бы получить сообщение multipart
для HTML, а не только часть text/html
.Фактически, если я проверяю необработанное сообщение в своем почтовом клиенте, я вижу:
From: Giovanni Lovato <giovanni.lovato@...>
To: Test <test@...>
Subject: Lorem ipsum dolor sit amet
... lots of other header lines ...
Content-type: multipart/alternative; boundary="B_3642854791_1171496246"
> This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
--B_3642854791_1171496246
Content-type: text/plain; charset="UTF-8"
Content-transfer-encoding: quoted-printable
Lorem ipsum dolor sit amet.
--B_3642854791_1171496246
Content-type: text/html; charset="UTF-8"
Content-transfer-encoding: quoted-printable
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Lorem ipsum dolor sit amet.</p>
</body>
</html>
--B_3642854791_1171496246--
Так что, похоже, ImapIdleChannelAdapter
уже извлекает часть HTML и передает ее обработчику со всемиоригинальные заголовки;все еще без содержания.
Я что-то не так делаю?