中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python使用imap-tools模塊下載郵件附件的示例分析

發布時間:2021-12-10 13:10:31 來源:億速云 閱讀:280 作者:柒染 欄目:開發技術

本篇文章給大家分享的是有關python使用imap-tools模塊下載郵件附件的示例分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

最近在做一些email相關的辦公自動化項目,發現一個第三方模塊imap-tools不錯, 網上沒有啥相關介紹,所以記錄下來.

環境: python3.8; imap-tools 0.39.0

需要pip 安裝一下imap-tools模塊

imap-tools模塊是python的第三方擴展, 它使用標準庫imaplib,并將常見的郵件處理事件封裝,郵件處理起來代碼短. 下面是個下載郵件附件的示例

from imap_tools import MailBox

with MailBox("imap服務器名").login("賬號", "密碼") as mailbox:
    for msg in mailbox.fetch(limit=2,reverse=True):  # 我這里為了避免讀取全部的郵件,加上了limit=2的匹配參數,讀取兩封郵件,按照最新接收的次序排序,進行測試; 
        for att in msg.attachments:  # msg為上一行取得的全部郵件
            if att.filename:    # 如果附件的文件名不為空
                att_data = att.payload # 獲得附件的內容
                f = open(att.filename,'wb') # 用二進制打開,一般郵件附件都是二進制的.
                f.write(att_data)
                f.close()

就是這么短,用起來比imaplib爽多了.

補充:使用Python的imap和email模塊讀取郵件

SMTP發送郵件的博文很多,但完整讀取郵件的較少,本文主要是Python3讀取郵件的編碼,同時使用BeautifulSoup解析郵件內容。

Python版本信息,如下:

Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32

代碼

import email
import imaplib
from bs4 import BeautifulSoup
def main():
    try:
		# 填寫需要讀取郵件服務器的imap的host和port,不知道請聯系管理員
        conn = imaplib.IMAP4_SSL(host='imap.xxx.com', port='993')
		# 讀取郵件的用戶名和密碼
        conn.login('xxx@qq.com', 'your password')
        # 默認選擇收件箱 INBOX
        conn.select()
		# Recent\Seen參數不起作用,暫先讀取所有郵件
        status, data = conn.search(None, 'ALL')  
        if status != 'OK':
            raise Exception('讀取郵件發生錯誤')
        emailids = data[0].split()
        # 倒序讀取郵件
        mail_counts = len(emailids)
        for i in range(mail_counts-1, 0, -1):
			# 獲取郵件信息
            status, edata = conn.fetch(emailids[i], '(RFC822)')
            # Message對象
            msg = email.message_from_bytes(edata[0][1])
            # 標題
            subject = email.header.decode_header(msg.get('subject'))
            # subject包含文檔編碼
            default_code = subject[0][1]
            # print('Content_Type', msg.get_content_type())
            ctype = msg.get_content_type()
			# 是否multipart類型,分別處理
            if msg.is_multipart():
                pl = msg.get_payload()
                for m in pl:
                    ctype = m.get_content_type()
                    if 'html' in ctype:
						# 注意decode參數,如果是True將解碼base64/quoted-printable等格式編碼內容,否則不解碼
                        html = str(m.get_payload(decode=True), m.get('content-type').split('=')[1])
                    # BeautifulSoup解析網頁
                    soup = BeautifulSoup(html, "lxml")
                    divs = soup.select('body')
                    for d in divs:
						# 提取所有文本內容
                        text = d.get_text(strip=True)  
                        print(text)
            else:
                html = str(msg.get_payload(decode=True), default_code)
                # BeautifulSoup解析網頁
                soup = BeautifulSoup(html, "lxml")
				# 提取body標簽里面的所有文本內容
                divs = soup.select('body')  
                for d in divs:
                    text = d.get_text(strip=True)
                    print(text)
    except Exception as ex:
        print(ex)
    finally:
        # close
        conn.close()
        conn.logout()
if __name__ == "__main__":
    main()

以上就是python使用imap-tools模塊下載郵件附件的示例分析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

驻马店市| 乌什县| 石河子市| 韶山市| 平昌县| 黄冈市| 海宁市| 唐山市| 敦煌市| 青州市| 博湖县| 内乡县| 丽江市| 德令哈市| 西平县| 西充县| 盖州市| 纳雍县| 繁峙县| 桐乡市| 嘉兴市| 富裕县| 杭锦后旗| 玉环县| 淮安市| 项城市| 平和县| 阜阳市| 闽侯县| 鸡东县| 改则县| 志丹县| 上杭县| 岳普湖县| 澄迈县| 河池市| 黄骅市| 文山县| 和平区| 宁国市| 天全县|