最近新開學(xué),接到了給老板的本科課程當(dāng)助教的工作,百十來號人一學(xué)期下來得有四五次作業(yè)發(fā)進郵箱里,需要我來統(tǒng)計打分,想想挨個點進去下載附件的過程就頭大,于是萌生了寫個腳本來統(tǒng)計作業(yè)的想法。
創(chuàng)新互聯(lián)建站長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為索縣企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),索縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。其實python里收發(fā)郵件都有很方便的包,合理使用就好,可以解決絕大多數(shù)的郵件收發(fā)任務(wù)。但是這個腳本寫下來還是花了不少時間,其中大的一部分時間是花在了python的編碼問題上,python2和python3的編碼預(yù)設(shè)有些許的不一樣,在python3中又取消了unicode這個方法,這就導(dǎo)致很多在python2中寫的例程都沒法在3中運行。
經(jīng)過修改以后下面的腳本可以從郵箱中獲取指定日期范圍內(nèi)的郵件附件,并存如指定目錄中。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import poplib import email import datetime import time import os import xlrd import xlwt from email.parser import Parser from email.header import decode_header from email.utils import parseaddr # 輸入郵件地址, 口令和POP3服務(wù)器地址: email = 'xxxxxxxx@qq.com' password = 'xxxxxxxxxxx' pop3_server = 'pop.qq.com' def decode_str(s):#字符編碼轉(zhuǎn)換 value, charset = decode_header(s)[0] if charset: value = value.decode(charset) return value def get_att(msg): import email attachment_files = [] for part in msg.walk(): file_name = part.get_filename()#獲取附件名稱類型 contType = part.get_content_type() if file_name: h = email.header.Header(file_name) dh = email.header.decode_header(h)#對附件名稱進行解碼 filename = dh[0][0] if dh[0][1]: filename = decode_str(str(filename,dh[0][1]))#將附件名稱可讀化 print(filename) #filename = filename.encode("utf-8") data = part.get_payload(decode=True)#下載附件 att_file = open('E:\\L\\zy\\307\\' + filename, 'wb')#在指定目錄下創(chuàng)建文件,注意二進制文件需要用wb模式打開 attachment_files.append(filename) att_file.write(data)#保存附件 att_file.close() return attachment_files # 連接到POP3服務(wù)器,有些郵箱服務(wù)器需要ssl加密,對于不需要加密的服務(wù)器可以使用poplib.POP3() server = poplib.POP3_SSL(pop3_server) server.set_debuglevel(1) # 打印POP3服務(wù)器的歡迎文字: print(server.getwelcome().decode('utf-8')) # 身份認(rèn)證: server.user(email) server.pass_(password) # 返回郵件數(shù)量和占用空間: print('Messages: %s. Size: %s' % server.stat()) # list()返回所有郵件的編號: resp, mails, octets = server.list() # 可以查看返回的列表類似[b'1 82923', b'2 2184', ...] print(mails) index = len(mails) for i in range(index,0,-1): #倒序遍歷郵件 resp, lines, octets = server.retr(i) # lines存儲了郵件的原始文本的每一行, #郵件的原始文本: msg_content = b'\r\n'.join(lines).decode('utf-8') #解析郵件: msg = Parser().parsestr(msg_content) #獲取郵件時間 date1 = time.strptime(msg.get("Date")[0:24],'%a, %d %b %Y %H:%M:%S') #格式化收件時間 date2 = time.strftime("%Y%m%d", date1)#郵件時間格式轉(zhuǎn)換 if (date2<'20180306')|(date2>'20180314'): continue f_list = get_att(msg)#獲取附件 #print_info(msg) server.quit()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞標(biāo)題:python+POP3實現(xiàn)批量下載郵件附件-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://vcdvsql.cn/article32/ddhhsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、面包屑導(dǎo)航、App開發(fā)、App設(shè)計、網(wǎng)站建設(shè)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容