Python+imbox庫(kù)實(shí)現(xiàn)郵件讀取與刪除和附件下載
獲取qq郵箱授權(quán)碼參考 Python+smtplib庫(kù)實(shí)現(xiàn)郵件發(fā)送功能
imbox.messages() 參數(shù):
inbox_messages = imbox.messages(unread=True) # 未讀郵件 inbox_messages = imbox.messages(unread=False) # 已讀郵件 inbox_messages = imbox.messages(flagged=True) # 已標(biāo)記郵件 inbox_messages = imbox.messages(date__lt=datetime(2025, 2, 7)) # 獲取指定時(shí)間的郵件,某天以前的數(shù)據(jù) inbox_messages = imbox.messages(date__on=datetime(2025, 2, 7)) # 獲取指定時(shí)間的郵件,某天的數(shù)據(jù) inbox_messages = imbox.messages(date__gt=datetime(2025, 2, 7)) # 獲取指定時(shí)間的郵件,某天以后的數(shù)據(jù)
完整代碼
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: # 提取正文內(nèi)容(列表中的第一個(gè)元素) if message.body['plain']: body = message.body['plain'][0] # 解碼 Unicode 編碼 body = body.encode().decode('unicode_escape') # 解碼 HTML 實(shí)體 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時(shí)間:{date}\n文本內(nèi)容:{body}\nHTML內(nèi)容:{html_body}\n附件:{attachment_names}\n')
print(message.body['plain']) 輸出結(jié)果是 Unicode 編碼的字符串列表,而不是直接解析后的文本。這是因?yàn)?imbox 返回的郵件正文內(nèi)容可能是以列表形式存儲(chǔ)的,并且可能包含 HTML 實(shí)體或 Unicode 編碼。
解決方案
提取列表中的字符串:message.body['plain'] 返回的是一個(gè)列表,你需要提取列表中的字符串。
解碼 Unicode 編碼:使用 Python 的內(nèi)置功能(如 .encode().decode('unicode_escape'))將 Unicode 編碼的字符串轉(zhuǎn)換為可讀文本。
處理 HTML 實(shí)體:如果郵件正文包含 HTML 實(shí)體(如 或 <a> 標(biāo)簽),可以使用 html 模塊或第三方庫(kù)(如 BeautifulSoup)來解析。
解決問題的代碼:
body = '' if 'plain' in message.body: # 提取正文內(nèi)容(列表中的第一個(gè)元素) if message.body['plain']: body = message.body['plain'][0] # 解碼 Unicode 編碼 body = body.encode().decode('unicode_escape') # 解碼 HTML 實(shí)體 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())
標(biāo)記郵件
可根據(jù)郵件內(nèi)容或主題等進(jìn)行標(biāo)記
imbox.mark_seen(uid) # 設(shè)為已讀 imbox.mark_flag(uid) # 標(biāo)記
刪除郵件
可根據(jù)郵件內(nèi)容或主題等進(jìn)行刪除
if '消息推送審核駁回的提醒' in subject and '2025 17:29' in date: imbox.delete(uid) # 刪除
以上就是Python+imbox庫(kù)實(shí)現(xiàn)郵件讀取與刪除和附件下載的詳細(xì)內(nèi)容,更多關(guān)于Python imbox郵件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pycharm2021激活碼使用教程(永久激活親測(cè)可用)
pycharm2021激活碼是一個(gè)可以輕松幫助用戶免費(fèi)激活pycharm2021.1軟件的文件,雖然說pycharm現(xiàn)在只是推出了2021.1的EAP版,但是如果你想先率先體驗(yàn)一波,那么就可以利用小編提供的這個(gè)激活碼來進(jìn)行使用啦,并這個(gè)激活碼是永久有效的2021-03-03python3模擬實(shí)現(xiàn)xshell遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法
今天小編就為大家分享一篇python3模擬實(shí)現(xiàn)xshell遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07用python對(duì)oracle進(jìn)行簡(jiǎn)單性能測(cè)試
這篇文章主要介紹了用python對(duì)oracle進(jìn)行簡(jiǎn)單性能測(cè)試的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12python 應(yīng)用之Pycharm 新建模板默認(rèn)添加編碼格式-作者-時(shí)間等信息【推薦】
這篇文章主要介紹了Pycharm 新建模板默認(rèn)添加編碼格式-作者-時(shí)間等信息 ,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作示例
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作,結(jié)合實(shí)例形式分析了itertools.groupby()函數(shù)針對(duì)字典進(jìn)行分組操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-03-03Python提取Word中圖片的實(shí)現(xiàn)步驟
本文主要介紹了Python提取Word中圖片的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Python 照片人物背景替換的實(shí)現(xiàn)方法
本文主要介紹了如何通過Python實(shí)現(xiàn)照片中人物背景圖的替換,甚至可以精細(xì)到頭發(fā)絲,感興趣的小伙伴可以看看2021-11-11Python實(shí)現(xiàn)字符串反轉(zhuǎn)的常用方法分析【4種方法】
這篇文章主要介紹了Python實(shí)現(xiàn)字符串反轉(zhuǎn)的常用方法,結(jié)合具體實(shí)例形式分析了4種常用的Python字符串反轉(zhuǎn)操作技巧,需要的朋友可以參考下2017-09-09