首页 > 解决方案 > IMAPLIB“初始值必须是 str 或 none,而不是字节”错误

问题描述

所以我正在研究一个基本上在后台运行的脚本,并从收到的任何包含主题中特定单词的电子邮件和来自特定人的电子邮件中提取数据。但是,我无法让它在运行它时解析主题,因为它一直给我一个错误,上面写着“初始值必须是 str 或 none,而不是字节”,我不确定这意味着什么或如何修复它。这是我到目前为止所拥有的:

import email
import imaplib
from bs4 import BeautifulSoup
import time
import sys

username = 'asadrasdfasdi@asdfasdf.ca'
password = 'asdfasdfasasdf'

mail = imaplib.IMAP4_SSL('imap-mail.outlook.com')
(retcode, capabilities) = mail.login(username, password)
mail.list()

n=0
while True:
    mail.select('inbox')
    (retcode, messages) = mail.search(None, 'UNSEEN', '(SUBJECT "XXXXX- 
 ")', '(FROM "XXX.XXX@XXX.ca")')
    if retcode == 'OK':
        for num in messages[0].split():
            n=n+1
            print('Processing Email ' + str(n) + ': ')
            typ, data = mail.fetch(num, '(RFC822)')
            for response_part in data:
                if isinstance(response_part, tuple):
                    original = email.message_from_string(response_part[1])
                    print("Subject: " + original['Subject'])
                    typ, data = mail.store(num,'+FLAGS','\\Seen')
                    time.sleep(120)

标签: pythonimaplib

解决方案


 email.message_from_string(data[0][1].decode('utf-8'))

推荐阅读