python 利用imap接收邮件,并保存附件

def SaveAttachImap():# login the imap server ,retrive the  new mails ,and download the attachments.

    M = imaplib.IMAP4(mail_host,mail_port)
    #print M


    M.login(mail_user,mail_pass)

    M.select('INBOX',False)
    #result, message = M.select('INBOX',False)
    typ, data = M.search(None, 'UNSEEN')
    print data
    for num in string.split(data[0]):
        try:
            typ, data = M.fetch(num, '(RFC822)')
            #print data
            msg = email.message_from_string(data[0][1])
            for par in msg.walk():
            #if not par.is_multipart():
                name = par.get_filename()
                print 'name',name

                #name2 = par.get_filename()
                #print 'name2',name2


                if name:
                    dstdir =dirname+name
                    print 'dirname',dstdir
                    #print 'name',name
                    data = par.get_payload(decode=True)
                    #print dstdir
                    try:
                        f = open(dstdir, 'wb') #注意一定要用wb来打开文件,因为附件一般都是二进制文件
                        print 'save attfile %s succeed'%dstdir
                    except:
                        print 'open  file name error'
                    f.write(data)
                    f.close()

                #print "_______________________________"
        except Exception,e:
            print 'got msg error: %s' % e

    M.close()
    M.logout()

posted @ 2013-12-25 17:31  马僧  阅读(2231)  评论(0编辑  收藏  举报