Как я могу объединить несколько команд извлечения IMAP?
Я использую JavaMail для получения данных сообщений из учетной записи IMAP. Например, я использую следующую команду для извлечения тел сообщений с uid от 1 до 4:
UID FETCH 1:4 BODY[]
Есть ли способ получить определенные части тела для конкретных сообщений? Например, я хотел бы использовать что-то вроде:
UID FETCH (1 BODY[1.3]) (2 BODY[1.1]) (3 BODY[2.1]) (4 BODY[1.4])
PS: я знаю, что мог бы также отправлять 4 разные команды, но по соображениям производительности я не могу позволить себе сделать отдельный запрос для каждого сообщения.
1 ответ
Вы должны получить те же части тела для каждого сообщения. То есть, если вы хотите часть 1 для сообщений 2 и 4 и часть 2 для сообщения 3, вы не можете отправить менее двух команд:
a uid fetch 2,4 (body[1])
b uid fetch 3 (body[3])
Хорошей новостью является то, что вы можете отправить их одновременно. Пока команды не конфликтуют, вы можете отправить вторую, не дожидаясь результата первой. При условии, что вы можете найти способ сделать это с помощью Javamail.
(Или, возможно, body.peek[1], который совпадает с body[] за исключением того, что он не устанавливает флаг \seen.)