下载电子邮件附件的脚本

2024-04-26 00:43:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在第18行遇到一个错误(m=email.message_from_字符串(电子邮件正文)说TypeError: initial_value must be str or None, not bytes。当我试图通过说print (data[0][1])来运行它时,它会以编码格式给出电子邮件的输出。在

我想调试错误。在

import imaplib
import email
import os

svdir = 'C:\\Users\\rnandipati\\Downloads'

mail = imaplib.IMAP4_SSL('outlook.office365.com',993)
mail.login("rnaati@jess.com", "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()

Tags: pathimportnonedatagetifosemail