Я использую 'imaplib' в python для получения электронной почты из учетной записи Gmail. Но я просто хочу знать содержание электронной почты, название вложения, но не нужно загружать полное приложение.Python imaplib загрузить Gmail Текст без загрузки полного вложения
По умолчанию
myGmail = imaplib.IMAP4_SSL(...)
....
(respCode, data) = myGmail.fetch(mailUid, 'RFC822')
вернет всю часть электронной почты, в том числе и в целом вложения закодированного в виде текста в данном возврате, который иногда огромно и ненужные.
Я искал в Интернете и stackOverflow, чтобы найти ответ. Многие из них упомянули, что сначала необходимо определить структуру электронной почты, а затем определить часть, которую вы хотите загрузить. И я также прочитал RFC 3501 документа о протоколе IMAP4, в which он отметил, что я могу использовать
BODY[]<> to download the specific body part in Fetch command.
Но я попробовал много команды в питоне imaplib как следующее:
(rCode, data) = myGmail.fetch(mailUid, 'BODY[0]')
(rCode, data) = myGmail.fetch(mailUid, 'BODY0')
(rCode, data) = myGmail.fetch(mailUid, 'BODY[TEXT]')
, но все из них не удалось с сообщением об ошибке:
error: FETCH command error: BAD ['Could not parse command']
Так кто-нибудь может сказать мне, как использовать эту команду в питона imaplib для Gmail?
И только для справки, BODYSTRUCTURE на приведенном выше примере электронной почты является:
(BODY
(
(
(
("TEXT" "PLAIN" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 1742 33)
("TEXT" "HTML" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 17976 485) "ALTERNATIVE"
)
(
"IMAGE" "JPEG"
("NAME" "image001.jpg") "<[email protected]>" "image001.jpg" "BASE64" 4070
)
"RELATED"
)
("APPLICATION" "PDF" ("NAME" "SAC 2012.pdf") NIL "SAC 2012.pdf" "BASE64" 20638)
"MIXED"
)
)
Спасибо !!!
Пожалуйста, [не оставляйте код] (http://sscce.org) - это затрудняет отслеживание и воспроизведение проблемы. Это нормально, чтобы пустое имя пользователя и пароль, но кроме этого все должно быть готово для вставки. – phihag
@JXITC - Вы когда-нибудь это понимали? Если да, пожалуйста, поделитесь своим кодом :) –
@ ZacharyBurt На самом деле, в конце концов, я не пытался получить структуру BODY, а затем разобрать. Вместо этого я просто просто загружаю весь контент (включая вложение) один раз. Это быстрое и грязное решение. – JXITC