python下载邮箱附件_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   [Msg#]   处理  返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的

LIST  list   [Msg#]   处理  返回邮件数量和每个邮件的大小

RETR  retr   [Msg#]     处理  返回由参数标识的邮件的全部文本

DELE  dele   [Msg#]     处理  服务器将由参数标识的邮件标记为删除,由quit命令执行

RSET  rset   None      处理  服务器将重置所有标记为删除的邮件,用于撤消DELE命令

TOP   top    [Msg#]   处理  服务器将返回由参数标识的邮件前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

#pop3 get email

M=poplib.POP3('pop3.126.com')

M.user('....')

M.pass_('....')

#number of emails

numMessages=len(M.list()[1])

print'num of messages',numMessages

foriinrange(numMessages):

m = M.retr(i+1)

buf = cStringIO.StringIO()

forjinm[1]:

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值