python - office - outlook mail api
script para descargar archivos adjuntos de correo electrónico (1)
El módulo de email
incluye una función message_from_bytes
. Úselo en lugar de message_from_string
para analizar un objeto de bytes
.
m = email.message_from_bytes(email_body)
Estoy frente a un error en la línea 18 (m = email.message_from_string (email_body)) diciendo que TypeError: initial_value must be str or None, not bytes
. Cuando trato de ejecutarlo diciendo print (data[0][1])
, me da una salida del correo electrónico en un formato codificado.
Quiero depurar el error.
import imaplib
import email
import os
svdir = ''C://Users//rnandipati//Downloads''
mail = imaplib.IMAP4_SSL(''outlook.office365.com'',993)
mail.login("[email protected]", "R!")
mail.select("Inbox")
typ, msgs = mail.search(None, ''(SUBJECT "ADP Files")'')
msgs = msgs[0].split()
for emailid in msgs:
resp, data = mail.fetch(emailid, "(RFC822)")
email_body = data[0][1]
m = email.message_from_string(email_body)
if m.get_content_maintype() != ''multipart'':
continue
for part in m.walk():
if part.get_content_maintype() == ''multipart'':
continue
if part.get(''Content-Disposition'') is None:
continue
filename = part.get_filename()
if filename is not None:
sv_path = os.path.join(svdir, filename)
if not os.path.isfile(sv_path):
print(sv_path)
fp = open(sv_path, ''wb'')
fp.write(part.get_payload(decode=True))
fp.close()