1. 程式人生 > >python 利用pop3接收郵件並儲存附件

python 利用pop3接收郵件並儲存附件

def SaveAttach():# login the pop3 server ,retrive the  new mails ,and download the attachments
    dstdir =dirname+str(time.ctime(time.time()))+'.zip'
    print 'starts'
    pp = poplib.POP3_SSL(mail_host,mail_port)
    print 'connect successful'
    pp.set_debuglevel(1)
    pp.user(mail_user)
    pp.pass_(mail_pass)
    ##list total count
    num = len(pp.list()[1])
    print 'num of messages', num

    for i in range(1,num):
        #m = M.retr(i+1)
        m = pp.retr(i)

        buf = cStringIO.StringIO()
        buf.seek(0)
        msg = email.message_from_file(buf)
        for par in msg.walk():
            #if not par.is_multipart():
            name = par.get_filename()

            if name:
                print 'name',name
                data = par.get_payload(decode=True)
                try:
                    f = open(dstdir, 'wb') #注意一定要用wb來開啟檔案,因為附件一般都是二進位制檔案
                    print 'save attfile succeed'
                except:
                    print 'open  file name error'
                f.write(data)
                f.close()
                pp.dele(i)
            else:
            #不是附件,是文字內容
                body = par.get_payload(decode=True) # 解碼出文本內容,直接輸出來就可以了。
                #print 'body:',body
                pass
                #print 'body:',body       #中文沒有處理好,所有沒有輸出了。
            #print '+'*60 # 用來區別各個部分的輸出
        else:
            continue
    pp.quit()
    print 'exit'