Python 下载电子邮件附件的脚本

Python 下载电子邮件附件的脚本,python,outlook,Python,Outlook,我在第18行m=email.message_处遇到一个错误,来自_stringemail_body的消息说TypeError:initial_值必须是str或None,而不是bytes。当我尝试运行它时,它会告诉我打印数据[0][1],它会以编码格式输出电子邮件 我想调试错误 import imaplib import email import os svdir = 'C:\\Users\\rnandipati\\Downloads' mail = imaplib.IMAP4_SSL('ou

我在第18行m=email.message_处遇到一个错误,来自_stringemail_body的消息说TypeError:initial_值必须是str或None,而不是bytes。当我尝试运行它时,它会告诉我打印数据[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()
电子邮件模块包括一个功能消息,\u from_bytes。使用它而不是来自字符串的消息来解析字节对象


它不再显示错误,但不会提供所需的输出,尽管我正在尝试从包含代码中所示主题的电子邮件下载附件。当我从_字节中放入消息_时,它只是执行,没有显示任何内容。我回答了您提出的问题,并帮助您调试和修复了此错误。如果你在做你的程序时再次陷入困境,问一个新问题。如果不是太模糊或太宽泛,有人会帮助你。
m = email.message_from_bytes(email_body)