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

Python+imbox庫實現郵件讀取與刪除和附件下載

 更新時間:2025年02月08日 16:14:09   作者:覓遠  
這篇文章主要為大家詳細介紹了Python如何使用imbox庫實現郵件讀取與刪除以及附件下載,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下

獲取qq郵箱授權碼參考 Python+smtplib庫實現郵件發(fā)送功能

imbox.messages() 參數:

    inbox_messages = imbox.messages(unread=True)  # 未讀郵件
    inbox_messages = imbox.messages(unread=False)  # 已讀郵件
    inbox_messages = imbox.messages(flagged=True)  # 已標記郵件
    
    inbox_messages = imbox.messages(date__lt=datetime(2025, 2, 7))  # 獲取指定時間的郵件,某天以前的數據
    inbox_messages = imbox.messages(date__on=datetime(2025, 2, 7))  # 獲取指定時間的郵件,某天的數據
    inbox_messages = imbox.messages(date__gt=datetime(2025, 2, 7))  # 獲取指定時間的郵件,某天以后的數據

完整代碼

from datetime import datetime
from imbox import Imbox
import html
 
# 登錄憑證
username = "2xx85555ss@qq.com"
password = "xxxxxxx"
 
with Imbox('imap.qq.com', username, password, ssl=True) as imbox:
    inbox_messages = imbox.messages()  # 獲取全部郵件
    for uid, message in inbox_messages:
        subject = message.subject  # 郵件主題
        from_ = message.sent_from  # 發(fā)件人
        to_ = message.sent_to  # 收件人
        date = message.date  # 發(fā)送日期
 
        # print(message.body['plain'])  # 郵件文本格式正文
        # 處理郵件正文
        body = ''
        if 'plain' in message.body:
            # 提取正文內容(列表中的第一個元素)
            if message.body['plain']:
                body = message.body['plain'][0]
                # 解碼 Unicode 編碼
                body = body.encode().decode('unicode_escape')
                # 解碼 HTML 實體
                body = html.unescape(body)
        else:
            print("No plain text body found.")
 
        html_body = message.body['html']  # html格式正文
 
        # print(message.attachments)  # 附件信息
        attachment_names = []
        for attachment in message.attachments:
            file_name = attachment.get('filename')
            attachment_names.append(file_name)
 
        print(
            f'主題:{subject}\n發(fā)件人:{from_}\n收件人:{to_}\n時間:{date}\n文本內容:{body}\nHTML內容:{html_body}\n附件:{attachment_names}\n')

print(message.body['plain']) 輸出結果是 Unicode 編碼的字符串列表,而不是直接解析后的文本。這是因為 imbox 返回的郵件正文內容可能是以列表形式存儲的,并且可能包含 HTML 實體或 Unicode 編碼。

解決方案

提取列表中的字符串:message.body['plain'] 返回的是一個列表,你需要提取列表中的字符串。

解碼 Unicode 編碼:使用 Python 的內置功能(如 .encode().decode('unicode_escape'))將 Unicode 編碼的字符串轉換為可讀文本。

處理 HTML 實體:如果郵件正文包含 HTML 實體(如 &nbsp; 或 <a> 標簽),可以使用 html 模塊或第三方庫(如 BeautifulSoup)來解析。

解決問題的代碼:

        body = ''
        if 'plain' in message.body:
            # 提取正文內容(列表中的第一個元素)
            if message.body['plain']:
                body = message.body['plain'][0]
                # 解碼 Unicode 編碼
                body = body.encode().decode('unicode_escape')
                # 解碼 HTML 實體
                body = html.unescape(body)
        else:
            print("No plain text body found.")

下載附件

        attachment_names = []
        for attachment in message.attachments:
            file_name = attachment.get('filename')
            attachment_names.append(file_name)
            with open(file_name, 'wb') as f:
                f.write(attachment['content'].getvalue())

標記郵件

可根據郵件內容或主題等進行標記

        imbox.mark_seen(uid)   # 設為已讀
        imbox.mark_flag(uid)  # 標記

刪除郵件

可根據郵件內容或主題等進行刪除

        if '消息推送審核駁回的提醒' in subject and '2025 17:29' in date:
            imbox.delete(uid)  # 刪除

以上就是Python+imbox庫實現郵件讀取與刪除和附件下載的詳細內容,更多關于Python imbox郵件的資料請關注腳本之家其它相關文章!

相關文章

最新評論

泉州市| 九江市| 开远市| 文安县| 晋城| 永州市| 房产| 南昌市| 嘉义县| 江口县| 沅江市| 包头市| 岳池县| 平利县| 桂阳县| 华池县| 北海市| 五河县| 紫金县| 临猗县| 楚雄市| 嫩江县| 哈尔滨市| 红原县| 乌兰浩特市| 滨海县| 东丽区| 廉江市| 搜索| 个旧市| 佛山市| 芷江| 华容县| 腾冲县| 永吉县| 洱源县| 当雄县| 偃师市| 永济市| 泰州市| 怀远县|