在网上找到的案例代码都是使用
msg = email.message_from_string(data[0][1].decode('utf-8')) # 转换为email.message对象
今天其中一个邮件遇到报错 'utf-8' codec can't decode byte 0xcc in position 6: invalid continuation byte’
于是用
charset=chardet.detect(data[0][1])['encoding']
msg = email.message_from_string(data[0][1].decode(charset))
问题解决了,顺便查了一下啊message_from_string的官方说明,发现还有email.message_from_bytes。
于是把代码进一步改为改为 :
msg = email.message_from_bytes(data[0][1])
普通邮件正常,当读到刚才报错的那封邮件时居然又报错了,提示:
object of type 'Header' has no len()
报错位置:
email.utils.parseaddr(msg.get('from'))
没有时间折腾,暂时先用message_from_string把
PS:
报错的邮件是腾讯企业邮箱发出的异地登录提醒:
encoding:ISO-8859-1
Subject: 异地登录提醒
From: 10000@exmail.weixin.qq.com