最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python+POP3實(shí)現(xiàn)批量下載郵件附件

 更新時(shí)間:2018年06月19日 15:30:09   作者:li_huifei  
這篇文章主要為大家詳細(xì)介紹了python+POP3實(shí)現(xiàn)批量下載郵件附件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近新開學(xué),接到了給老板的本科課程當(dāng)助教的工作,百十來號(hào)人一學(xué)期下來得有四五次作業(yè)發(fā)進(jìn)郵箱里,需要我來統(tǒng)計(jì)打分,想想挨個(gè)點(diǎn)進(jìn)去下載附件的過程就頭大,于是萌生了寫個(gè)腳本來統(tǒng)計(jì)作業(yè)的想法。

其實(shí)python里收發(fā)郵件都有很方便的包,合理使用就好,可以解決絕大多數(shù)的郵件收發(fā)任務(wù)。但是這個(gè)腳本寫下來還是花了不少時(shí)間,其中最大的一部分時(shí)間是花在了python的編碼問題上,python2和python3的編碼預(yù)設(shè)有些許的不一樣,在python3中又取消了unicode這個(gè)方法,這就導(dǎo)致很多在python2中寫的例程都沒法在3中運(yùn)行。

經(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)#對(duì)附件名稱進(jìn)行解碼 
      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)建文件,注意二進(jìn)制文件需要用wb模式打開 
      attachment_files.append(filename) 
      att_file.write(data)#保存附件 
      att_file.close() 
  return attachment_files 
 
     
       
# 連接到POP3服務(wù)器,有些郵箱服務(wù)器需要ssl加密,對(duì)于不需要加密的服務(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()返回所有郵件的編號(hào): 
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存儲(chǔ)了郵件的原始文本的每一行, 
  #郵件的原始文本: 
  msg_content = b'\r\n'.join(lines).decode('utf-8') 
  #解析郵件: 
  msg = Parser().parsestr(msg_content) 
  #獲取郵件時(shí)間 
  date1 = time.strptime(msg.get("Date")[0:24],'%a, %d %b %Y %H:%M:%S') #格式化收件時(shí)間 
  date2 = time.strftime("%Y%m%d", date1)#郵件時(shí)間格式轉(zhuǎn)換 
  if (date2<'20180306')|(date2>'20180314'): 
     
    continue 
  f_list = get_att(msg)#獲取附件 
   
     
   
  #print_info(msg) 
 
server.quit() 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python pip如何手動(dòng)安裝二進(jìn)制包

    python pip如何手動(dòng)安裝二進(jìn)制包

    這篇文章主要介紹了python pip如何手動(dòng)安裝二進(jìn)制包,幫助大家更好的進(jìn)行python開發(fā),感興趣的朋友可以了解下
    2020-09-09
  • Python標(biāo)準(zhǔn)庫之日期、時(shí)間和日歷模塊

    Python標(biāo)準(zhǔn)庫之日期、時(shí)間和日歷模塊

    這篇文章介紹了Python標(biāo)準(zhǔn)庫之日期、時(shí)間和日歷模塊,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Python中利用all()來優(yōu)化減少判斷的實(shí)例分析

    Python中利用all()來優(yōu)化減少判斷的實(shí)例分析

    在本篇文章里小編給大家整理的是一篇關(guān)于Python中利用all()來優(yōu)化減少判斷的實(shí)例分析內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-06-06
  • Python關(guān)于迭代器的使用

    Python關(guān)于迭代器的使用

    這篇文章主要介紹了Python關(guān)于迭代器的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python中ConfigParse模塊的用法

    python中ConfigParse模塊的用法

    這篇文章主要介紹了python中ConfigParse模塊的用法,以實(shí)例形式講述了配置文件模塊ConfigParse的使用步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • python編寫網(wǎng)頁爬蟲腳本并實(shí)現(xiàn)APScheduler調(diào)度

    python編寫網(wǎng)頁爬蟲腳本并實(shí)現(xiàn)APScheduler調(diào)度

    爬蟲爬的頁面是京東的電子書網(wǎng)站頁面,每天會(huì)更新一些免費(fèi)的電子書,爬蟲會(huì)把每天更新的免費(fèi)的書名以第一時(shí)間通過郵件發(fā)給我,通知我去下載
    2014-07-07
  • Python數(shù)據(jù)可視化 pyecharts實(shí)現(xiàn)各種統(tǒng)計(jì)圖表過程詳解

    Python數(shù)據(jù)可視化 pyecharts實(shí)現(xiàn)各種統(tǒng)計(jì)圖表過程詳解

    這篇文章主要介紹了Python數(shù)據(jù)可視化 pyecharts實(shí)現(xiàn)各種統(tǒng)計(jì)圖表過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)PDF頁面的刪除與添加功能

    Python實(shí)現(xiàn)PDF頁面的刪除與添加功能

    在處理PDF文檔的過程中,我們時(shí)常會(huì)需要對(duì)PDF文檔中的頁面進(jìn)行編輯操作的情況,如插入和刪除頁面,通過添加和刪除PDF頁面,我們可以增加內(nèi)容或?qū)Σ恍枰膬?nèi)容進(jìn)行刪除,本文將介紹如何使用Python代碼實(shí)現(xiàn)在PDF文檔中添加和刪除頁面
    2024-04-04
  • Pyramid Mako模板引入helper對(duì)象的步驟方法

    Pyramid Mako模板引入helper對(duì)象的步驟方法

    ylons中的mako模板,默認(rèn)會(huì)引入一個(gè)helper對(duì)象,我們可以在里面擴(kuò)展方法,應(yīng)對(duì)在模板輸出時(shí)候會(huì)常用的操作,那么在Pyramid中如何默認(rèn)引入同樣的輔助類到模板中
    2013-11-11
  • Python安裝Graphviz超詳細(xì)圖文教程

    Python安裝Graphviz超詳細(xì)圖文教程

    這篇文章主要介紹了Python安裝Graphviz超詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

牡丹江市| 云霄县| 龙州县| 余庆县| 大邑县| 肇庆市| 宝坻区| 北碚区| 油尖旺区| 黄山市| 聂荣县| 庆阳市| 南华县| 高清| 宁国市| 英吉沙县| 玛沁县| 道真| 富裕县| 兰考县| 阳西县| 古浪县| 介休市| 海原县| 佛学| 桦川县| 衡水市| 台北县| 雷波县| 广宁县| 敦化市| 保定市| 洛川县| 潍坊市| 宣化县| 德保县| 大姚县| 礼泉县| 醴陵市| 阿坝| 阆中市|