python收發郵件(demo)--smtplib--poplib

發郵件

#encoding=utf-8

import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

if __name__ == '__main__':
        fromaddr = '[email protected]'
        toaddrs = ['[email protected]', '[email protected]']
        subject = 'smtplib test.'

        content = 'smtplib test: hello, smtplib ! Can you see it ?'
        textApart = MIMEText(content)

        imageFile = '/tmp/code2.png'
        imageApart = MIMEImage(file(imageFile, 'rb').read(), imageFile.split('.')[-1])
        imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile.split('/')[-1])

        m = MIMEMultipart()
        m.attach(textApart)
        m.attach(imageApart)
        m['Subject'] = subject

        server = smtplib.SMTP('smtp.163.com')
        server.login(fromaddr,'BuGaoSuNi')
        server.sendmail(fromaddr, toaddrs, m.as_string())
        server.quit()



收郵件

#encoding=utf-8
import poplib
import email

if __name__ == '__main__':
        M = poplib.POP3('pop.163.com')
        M.user('[email protected]')  
        M.pass_('BuGaoSuNi')
   
        #打印有多少封信  
        numMessages = len(M.list()[1])  
        print 'num of messages', numMessages  

   
        #從最老的郵件開始遍歷
        for i in range(numMessages):
                m = M.retr(i+1)
                msg = email.message_from_string('\n'.join(m[1]))
                #allHeaders = email.Header.decode_header(msg)
                aimHeaderStrs = {'from':'', 'to':'', 'subject':''}
                for aimKey in aimHeaderStrs.keys():
                        aimHeaderList = email.Header.decode_header(msg[aimKey])
                        for tmpTuple in aimHeaderList:
                                if tmpTuple[1] == None:
                                        aimHeaderStrs[aimKey] += tmpTuple[0]
                                else:
                                        aimHeaderStrs[aimKey] += tmpTuple[0].decode(tmpTuple[1]) #轉成unicode
                for aimKey in aimHeaderStrs.keys():
                        print aimKey,':',aimHeaderStrs[aimKey].encode('utf-8') #轉成utf-8顯示

                for part in msg.walk(): #遍歷所有payload
                        contenttype = part.get_content_type()
                        filename = part.get_filename()
                        if filename: #and contenttype=='application/octet-stream':
                                #保存附件
                                data = part.get_payload(decode=True)
                                file("mail%d.attach.%s" % (i+1,filename),'wb').write(data)
                        elif contenttype == 'text/plain':
                                #保存正文
                                data = part.get_payload(decode=True)
                                charset = part.get_content_charset('ios-8859-1')
                                file('mail%d.txt' % (i+1), 'w').write(data.decode(charset).encode('utf-8'))




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章