python用pop3收取邮件下载附件
python的poplib模块是用来从pop3收取邮件的,也可以说它是处理邮件的第一步。POP3协议并不复杂,它也是采用的一问一答式的方式,你向服务器发送一个命令,服务器必然会回复一个信息。pop3命令码如下:
命令 poplib方法 参数 状态 描述
-----------------------------------------------------------------------------------------------
USER user username 认可 用户名,此命令与下面的pass命令若成功,将导致状态转换
PASS pass_ password 认可 用户密码
APOP apop Name,Digest 认可 Digest是MD5消息摘要
-----------------------------------------------------------------------------------------------
STAT stat None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL uidl 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST list 处理 返回邮件数量和每个邮件的大小
RETR retr 处理 返回由参数标识的邮件的全部文本
DELE dele 处理 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET rset None 处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP top 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP noop None 处理 服务器返回一个肯定的响应
----------------------------------------------------------------------------------------------
QUIT quit None 更新
python的poplib也针对这些命令分别提供了对应的方法,上面在第二列里已经标出来。收取邮件的过程一般是:
1. 连接pop3服务器 (poplib.POP3.__init__)
2. 发送用户名和密码进行验证 (poplib.POP3.user poplib.POP3.pass_)
3. 获取邮箱中信件信息 (poplib.POP3.stat)
4. 收取邮件 (poplib.POP3.retr)
5. 删除邮件 (poplib.POP3.dele)
6. 退出 (poplib.POP3.quit)
程序尚未调试。。。。因为126不给俺调试。。。pop3要收钱。。。可恶。。
[*]importpoplib
[*]importcStringIO
[*]importemail
[*]importbase64
[*]
[*]#pop3getemail
[*]M=poplib.POP3('pop3.126.com')
[*]M.user('....')
[*]M.pass_('....')
[*]
[*]#numberofemails
[*]numMessages=len(M.list())
[*]print'numofmessages',numMessages
[*]
[*]foriinrange(numMessages):
[*]m=M.retr(i+1)
[*]
[*]buf=cStringIO.StringIO()
[*]forjinm:
[*]print>>buf,j
[*]buf.seek(0)
[*]
[*]#
[*]msg=email.message_from_file(buf)
[*]forpartinmsg.walk():
[*]contenttype=part.get_content_type()
[*]filename=part.get_filename()
[*]
[*]iffilenameandcontenttype=='application/octet-stream':
[*]#save
[*]f=open("mail%d.%s.attach"%(i+1,filename),'wb')
[*]f.write(base64.decodestring(part.get_payload()))
[*]f.close()
页:
[1]