我有一个程序,可以从我的电子邮件中检索信息(通过POP),我想检索电子邮件的主题,我使用这个:
import poplib
from email import parser
pop_srvr = poplib.POP3_SSL('pop.gmail.com')
pop_srvr.user('username')
pop_srvr.pass_('password')
messages = [pop_srvr.retr(i) for i in range(1, len(pop_srvr.list()[1]) + 1)]
messages = [b"\n".join(mssg[1]) for mssg in messages]
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
print (message['subject'])
print (message['body'])
pop_srvr.quit()
但当我运行它时,我得到了这个
Traceback (most recent call last):
File "C:/Users/Yousef/Desktop/parser proto.py", line 11, in <module>
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
File "C:/Users/Yousef/Desktop/parser proto.py", line 11, in <listcomp>
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
File "C:\Users\Yousef\AppData\Local\Programs\Python\Python36-
32\lib\email\parser.py", line 68, in parsestr
return self.parse(StringIO(text), headersonly=headersonly)
TypeError: initial_value must be str or None, not bytes
有人告诉我我做错了什么。。。你知道吗
我发现
email
模块有message_from_bytes
函数。你试过用它吗?我可能被误解在下面的代码。请在您身边核实:更多信息:parsing email contents from poplib with email module (PYTHON)
你试过把它串起来吗?你知道吗
messages = [parser.Parser().parsestr(str(mssg)) for mssg in messages]
它可能会导致一个不正确的字符串,但通过这种方式,您可以检查
mssg
是否真的是一个类似于的字节。如果错误消失了,你可以用一种适合你的程序的方式来转换它。你知道吗相关问题 更多 >
编程相关推荐