2010-01-14 3 views
3

Мне нужна помощь в составлении команды извлечения IMAP, чтобы получить только определенное вложение mime без извлечения всего тела или другого вложения. Учитывая следующие BODYSTRUCTUREIMAP-выбор из mime-части без получения всего сообщения

(BODYSTRUCTURE (("text" "html" ("charset" "utf-8") NIL NIL "base64" 568 8 NIL NIL NIL) "mixed" ("boundary" "===============0621936444==") NIL NIL)) 

как бы команду извлечения для извлечения текста/HTML часть выглядеть? Несколько раз я читал раздел 6.4.5 из RFC3501, но я до сих пор его не понимаю. Также будут оценены любые указатели на дополнительные примеры запросов на выборку для вложений mime.

ответ

6

Off верхней части моей головы, это было бы что-то вроде:

FETCH 88 BODY.PEEK[1] 

где 88 является 88-е сообщение, и 1 является частью тела.

+0

1 не является частью тела, но часть text/html, которую я пытаюсь извлечь, каждая последующая часть, видимая в ответе BODYSTRUCTURE, пронумерована и может быть выбрана таким образом. Благодарю. – pysnake

3

Попробуйте это:

FETCH uid BODY.PEEK[1.2] 
1

UID FETCH uid_of_the_mail BODY[1.2] является первым прикреплением рядного. Ну, для gmail, 1 для ТЕКСТА, 2-N для вложения. 1.1 для ТЕКСТА, 1.2 следует для первого встроенного крепления, 1.N-1 для N-го встроенного крепления.

-1

Прежде всего вам нужно разобрать ответ на bodystructure, а затем найти строку каждой части раздела. После того, как вы получили каждую секцию раздела части, вы можете получить требуемую часть mime.

Предположим, что вам нужно получить первую часть пантомиму, то команда должна быть, как это

. FETCH msgno (BODY [1.MIME])