欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

經過修改以后下面的腳本可以從郵箱中獲取指定日期范圍內的郵件附件,并存如指定目錄中。

#!/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服務器地址: 
email = 'xxxxxxxx@qq.com' 
password = 'xxxxxxxxxxx' 
pop3_server = 'pop.qq.com' 
 
 
 
def decode_str(s):#字符編碼轉換 
  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服務器,有些郵箱服務器需要ssl加密,對于不需要加密的服務器可以使用poplib.POP3() 
server = poplib.POP3_SSL(pop3_server) 
server.set_debuglevel(1) 
# 打印POP3服務器的歡迎文字: 
print(server.getwelcome().decode('utf-8')) 
# 身份認證: 
server.user(email) 
server.pass_(password) 
# 返回郵件數量和占用空間: 
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)#郵件時間格式轉換 
  if (date2<'20180306')|(date2>'20180314'): 
     
    continue 
  f_list = get_att(msg)#獲取附件 
   
     
   
  #print_info(msg) 
 
server.quit() 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Flask框架中密碼的加鹽哈希加密和驗證功能的用法詳解

    Flask框架中密碼的加鹽哈希加密和驗證功能的用法詳解

    加鹽加密就是在加密時混入一段隨機字符串,這段字符串便被稱為"鹽值",這里我們來看一下Python的Flask框架中密碼的加鹽哈希加密和驗證功能的用法詳解:
    2016-06-06
  • 用于業(yè)余項目的8個優(yōu)秀Python庫

    用于業(yè)余項目的8個優(yōu)秀Python庫

    今天小編就為大家分享一篇用于業(yè)余項目的8個大型Python庫,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-09-09
  • Django網絡框架之HelloDjango項目創(chuàng)建教程

    Django網絡框架之HelloDjango項目創(chuàng)建教程

    這篇文章主要介紹了Django網絡框架之HelloDjango項目創(chuàng)建,結合實例形式詳細分析了Django框架創(chuàng)建HelloDjango項目的具體步驟與詳細實現(xiàn)技巧,需要的朋友可以參考下
    2019-06-06
  • Python創(chuàng)建Getter和Setter的方法詳解

    Python創(chuàng)建Getter和Setter的方法詳解

    Getters?和?Setters?是幫助我們設置類變量或屬性而無需直接訪問的方法,這篇文章主要和大家介紹了如何在Python中創(chuàng)建Getter和Setter,需要的可以參考下
    2023-10-10
  • python協(xié)程gevent案例 爬取斗魚圖片過程解析

    python協(xié)程gevent案例 爬取斗魚圖片過程解析

    這篇文章主要介紹了python協(xié)程gevent案例 爬取斗魚圖片過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python?面向切面編程?AOP?及裝飾器

    Python?面向切面編程?AOP?及裝飾器

    這篇文章主要介紹了Python?面向切面編程?AOP?及裝飾器,AOP,就是面向切面編程,簡單的說,就是動態(tài)地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程,更多相關資需要的小伙伴可以參考下面文章內容
    2022-05-05
  • Python Pexpect庫的簡單使用方法

    Python Pexpect庫的簡單使用方法

    這篇文章主要介紹了Python Pexpect庫的簡單使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 全面了解django的緩存機制及使用方法

    全面了解django的緩存機制及使用方法

    這篇文章主要介紹了全面了解django的緩存機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python OpenCV之常用濾波器使用詳解

    Python OpenCV之常用濾波器使用詳解

    OpenCV中常用的幾種濾波器有:均值濾波器、中值濾波器、高斯濾波器、雙邊濾波器,本文將通過示例詳細講解這幾種濾波器的使用,需要的可以參考一下
    2022-04-04
  • 一文搞懂Pandas數據透視的4個函數的使用

    一文搞懂Pandas數據透視的4個函數的使用

    今天主要和大家分享Pandas中四種有關數據透視的通用函數,在數據處理中遇到這類需求時,能夠很好地應對,快跟隨小編一起學習一下吧
    2022-06-06

最新評論