使用poplib解析头

你好,
我正在编写一个Python程序,用于使用POP3检查电子邮件.我试过了
来自python.org的示例代码,并且效果很好.换句话说,
下面的代码成功打印出我的电子邮件.
导入GetPass,Poplib,电子邮件
m = poplib.pop3('mail.blah.com')
M.User('用户名')
M.Pass _('密码')
nummessages = len(m.list()[1])
对于我的范围(nummessages):
对于j in m.retr(i+1)[1]:
打印j
m.quit()
但是,如果我理解正确的话,Python Poplib库也将
为我解析电子邮件,以便我可以通过标题迭代,
每个消息的主体等,并在我的程序中使用它们.我觉得
我需要使用的方法是email.message_from_file,但是我有
难以使其工作.谁能向我解释我会怎样
扩展上面的示例来执行此操作?
我试图通过在i循环中使用线路来做到这一点:
消息= email.message_from_file(j)
但是我会发现错误:" attributeError:'str'对象没有属性'readline'"
请原谅这个非常基本的问题.我大部分编程
在PHP中,我才刚刚开始使用Python.
非常感谢,
J-C

# 回答1


5月27日,上午8:39,Jean-Claude Neveu
写道:
嘿,
电子邮件模块具有第二个功能 - 'Message_from_string' -
在这里可能更有用.目前,您要去
'Message_from_file'试图将其视为文件的字符串,因此
它抱怨字符串对象没有文件的一部分
对象接口.
(我从未使用过电子邮件或poplib,所以这只是一个猜测...)
-Alex23
# 回答2


5月27日,上午12:39,Jean-Claude Neveu
写道:
这是我学习python时写的东西:http://gflanagan.net/site/python/pag...liacci.py.py.html
hth(如果您可以破译!)
杰拉德
# 回答3


在06:39,MARTEDã前27 Maggio 2008 Jean-Claude Neveu写道:
在http://it.geocities.com/call_me_not_now/index.html上查看我的程序
您可以研究它.
但简而言之
从email.parser导入headerparser
#然后您可以在下面解析邮件,身体等
m = poplib.pop3('mail.blah.com')
M.User('用户名')
M.Pass _('密码')
nummsgs = len(m.list()[1])
对于范围内的CNT(1,NumMSGS +1):
标头= m.top(CNT,0)[1])
hth
# 回答4


jean-claude neveu 您在此主题中收到了一些非常令人困惑的建议.亚历克斯有
正确的答案,但我想扩展一点.
您说:" Python Poplib库也将为我解析电子邮件".这个
是不正确的. Poplib,就像Python标准的许多模块一样
库,重点是一个目的:处理POP3协议.它
将允许您计算您的消息并获取消息,但这就是
它,因为这就是Pop3所做的一切.这是一个非常简单的协议.
现在,标准库确实包括用于解析电子邮件的模块
似乎意识到. "电子邮件"模块是一个非常复杂的工具
目的.但是,电子邮件模块没有任何 Fech邮件的方式. 因此,您需要将它们缝合在一起. poplib.retr给你一个字符串. 您需要将该字符串交给电子邮件 模块,您可以使用" email.message_from_string"来做到这一点. - - 蒂姆·罗伯茨(Tim Roberts),ti@probo.com Providenza&Boekelheide,Inc.

标签: python

添加新评论