【发布时间】:2021-01-12 06:33:09
【问题描述】:
我正在尝试通过 imaplib 和电子邮件模块将主题行、收件人、发件人和正文文本解析为字符串。当我尝试解析原始消息时,我收到一条错误消息,提示 AttributeError: 'tuple' object has no attribute 'decode'。请帮忙。
import imaplib
import email
Mymail = imaplib.IMAP4_SSL('imap.gmail.com')
password = input()
abcxyz123
Mymail.login('xxx@gmail.com', password)
('OK', [b'xxx@gmail.com authenticated (Success)'])
Mymail.select('INBOX', readonly = True)
('OK', [b'1'])
UIDs = Mymail.search(None, '(SINCE "20-Aug-2019")')
UIDs
('OK', [b'1'])
rawMessage = Mymail.fetch('1', '(BODY[] FLAGS)')
rawHeader = Mymail.fetch('1', "(BODY[HEADER.FIELDS (FROM)])")
rawHeader2 = Mymail.fetch('1', "(BODY[HEADER.FIELDS (TO)])")
rawHeader3 = Mymail.fetch('1', "(BODY[HEADER.FIELDS (SUBJECT)])")
rawHeader4 = Mymail.fetch('1', "(BODY[TEXT])")
**msg = email.message_from_bytes(rawMessage)**
我在尝试解析原始消息时收到以下错误消息:
*Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
msg = email.message_from_bytes(rawMessage)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/email/__init__.py", line 46, in message_from_bytes
return BytesParser(*args, **kws).parsebytes(s)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/email/parser.py", line 122, in parsebytes
text = text.decode('ASCII', errors='surrogateescape')
AttributeError: 'tuple' object has no attribute 'decode'*
【问题讨论】:
-
检查 email 和 email.parser 模块,它们可以很好地解析消息,尤其是在最近的 python 3 版本中。
标签: python email parsing imap gmail-imap