Я пытаюсь работать с простым многопользовательским MIME-адресом, используя Python's email module. Однако по какой-то причине я не понимаю, я не могу ходить по всем частям электронной почты - по какой-то причине приложение/pdf не учитывается.Почему парсер электронной почты python не находит все части этого многопользовательского электронного письма MIME?
Sample неудачу операции:
import email
msgstring = '''See bottom of post'''
msg = email.message_from_string(msgstring)
has_pdf_attached = False
for part in msg.walk():
print (part.get_content_type())
if part.get_content_type() == 'application/pdf':
payload = part.get_payload(decode=True)
if '%PDF-' in payload:
has_pdf_attached = True
print(has_pdf_attached)
Выход (уведомление о том, что окончательное 'применение/PDF' часть отсутствует в print
Инг частей):
multipart/alternative
text/plain
text/html
False
само сообщение, пропущено до показать важные бит:
--_=_swift_v4_145618772756cba94f8fcc2_=_
Content-type: multipart/alternative; boundary="----------=_1456187728-18401-69"
This is a multi-part message in MIME format...
------------=_1456187728-18401-69
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
A bunch of content here
foobar
barfoo
etc
------------=_1456187728-18401-69
Content-Type: text/html; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
<html><body>
<p>HTML version of content</p>
</body></html>
------------=_1456187728-18401-69--
--_=_swift_v4_145618772756cba94f8fcc2_=_
Content-Type: application/pdf; name test.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename test.pdf
A_Big_Long_Base64_Enconded_PDF_File_foofoofoofoofoofoofoofoo
JVBER0OUMyNzc0ODFDODAwMTI+IF0KL0RvY0NoZWNrFADSFsfsaFdsafsdaf
dHhyZWYKMzE4MjkKJSVFT0YKFDSFDSFdsfdsfdsfdsfdsfdsfdsfdsfdsfds
--_=_swift_v4_145618772756cba94f8fcc2_=_--
Итак, что я делаю неправильно? Я замечаю, что «обнаруженные» части находятся в первом «разделе», обернутом таинственным для меня --_=_swift_v4_145618772756cba94f8fcc2_=_--
. Я предполагаю, что это связано, но поиск google и SO не удалось, поэтому я здесь.