Как определить размер вложенного файла из сообщения IMAP - PullRequest
2 голосов
/ 07 февраля 2009

Я пишу почтовое приложение IMAP, работающее на J2ME. Это мой старший проект.

Во-первых, я хотел бы знать, есть ли какие-либо сообщения IMAP, чтобы получить только тело сообщения, не включая вложение?

Когда я отправляю сообщение на IMAP-сервер как ..

. получить 20 тел [текст]

Сервер IMAP ответит как

<- ЧАСТЬ ТЕЛА ->

--- MOQ1233897306fd448beb67b3c728ca47f0f5c3dbef2f Тип контента: изображение / JPEG; Name = "card.jpg" Content-Transfer-Encoding: base64 Содержание-Диспозиция: вложение; имя файла = "card.jpg" / 9J / 4RPsRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAA ...

Итак, я понятия не имею, как получить только тело, а не привязанность !? Как узнать размер файла и сколько вложенных файлов в сообщении, прежде чем загрузить все эти сообщения и рассчитать размер файла?

Если кто-нибудь знает об этом, пожалуйста, помогите мне. Большое спасибо.

1 Ответ

4 голосов
/ 16 февраля 2009

Вам нужно будет запросить у сервера БОДИСТРУКТУРУ этого сообщения:

FETCH 20 BODYSTRUCTURE

Затем вам придется проанализировать ответ и принять решение о наличии отсутствия вложений. Вот пример ответа на сообщение с текстовой частью и тремя прикрепленными изображениями:

20 FETCH (BODYSTRUCTURE (("TEXT" "PLAIN" ("CHARSET" "ISO-8859-15" "FORMAT" "flowed") NIL NIL "8BIT" 950 30 NIL NIL NIL)("IMAGE" "JPEG" ("NAME" "r001-023.jpg") NIL NIL "BASE64" 1708116 NIL ("INLINE" ("FILENAME" "r001-023.jpg")) NIL)("IMAGE" "JPEG" ("NAME" "r001-022.jpg") NIL NIL "BASE64" 2077114 NIL ("INLINE" ("FILENAME" "r001-022.jpg")) NIL)("IMAGE" "JPEG" ("NAME" "r001-012.jpg") NIL NIL "BASE64" 2374832 NIL ("INLINE" ("FILENAME" "r001-012.jpg")) NIL) "MIXED" ("BOUNDARY" "------------090105040606010906000608") NIL NIL))
...