python辦公自動化之讀取本地OUTLOOK客戶端郵件
更新時間:2023年10月24日 08:37:43 作者:ryanlll3
這篇文章主要為大家詳細介紹了如何使用python實現(xiàn)讀取本地OUTLOOK客戶端郵件,文中的示例代碼講解詳細,具有一定的參考價值,需要的小伙伴可以了解下
本方法適用于POP服務器不可用,管理員沒有賦予開啟權(quán)限的情況。你只能讀取本地客戶端的郵件,否則建議直接開發(fā)python程序自動登錄服務器,讀取郵件。
安裝依賴包
python -m pip install pypiwin32
讀取郵件
#!/usr/bin/python
# _*_ coding:utf-8 _*_
from win32com.client.gencache import EnsureDispatch as Dispatch
# 固定寫法
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
# 根級目錄(郵箱名稱,包括Outlook讀取的存檔名稱)
Accounts = outlook.Folders
for Account_Name in Accounts:
print('>> 正在查詢的帳戶名稱:{}'.format(Account_Name.Name))
# 一級目錄集合(與inbox同級)['收件箱', '發(fā)件箱', '已發(fā)送', 'xxx', 'xxx']
Level_1_Names = Account_Name.Folders
for Level_1_Name in Level_1_Names:
print('- 正在查詢一級目錄:{}'.format(Level_1_Name.Name))
# 一級文件夾的mail合集[所有郵件對象]
Mail_1_Messages = Level_1_Name.Items
# 將郵件按接收時間排序
Mail_1_Messages.Sort("[ReceivedTime]", True)
# 開始查看單個郵件的信息
for xx in Mail_1_Messages:
Root_Directory_Name_1 = Account_Name.Name # 記錄根目錄名稱
Level_1_FolderName_1 = Level_1_Name.Name # 記錄一級目錄名稱
Level_2_FolderName_1 = '' # 一級目錄肯定沒有二級目錄,顧留為空
# 接收時間
if hasattr(xx, 'ReceivedTime'):
ReceivedTime_1 = str(xx.ReceivedTime)[:-6]
else:
ReceivedTime_1 = ''
# 發(fā)件人
if hasattr(xx, 'SenderName'):
SenderName_1 = xx.SenderName
else:
SenderName_1 = ''
# 收件人
if hasattr(xx, 'To'):
to_to_1 = xx.To
else:
to_to_1 = ''
# 抄送人
if hasattr(xx, 'CC'):
cc_cc_1 = xx.CC
else:
cc_cc_1 = ''
# 主題
if hasattr(xx, 'Subject'):
Subject_1 = xx.Subject
else:
Subject_1 = ''
# 郵件MessageID
if hasattr(xx, 'EntryID'):
MessageID_1 = xx.EntryID
else:
MessageID_1 = ''
# 會話主題
if hasattr(xx, 'ConversationTopic'):
ConversationTopic_1 = xx.ConversationTopic
else:
ConversationTopic_1 = ''
# 會話ID
if hasattr(xx, 'ConversationID'):
ConversationID_1 = xx.ConversationID
else:
ConversationID_1 = ''
# 會話記錄相對位置
if hasattr(xx, 'ConversationIndex'):
ConversationIndex_1 = xx.ConversationIndex
else:
ConversationIndex_1 = ''
# 郵件內(nèi)容
if hasattr(xx, 'Body'):
EmailBody_1 = xx.Body
else:
EmailBody_1 = ''
# 判斷當前查詢的一級郵件目錄是否有二級目錄(若有多級目錄,可以參考此段代碼)
if Level_1_Name.Folders:
# 二級目錄的集合
Level_2_Names = Level_1_Name.Folders
for Level_2_Name in Level_2_Names:
print(' - - 正在查詢二級目錄:' , Level_1_Name.Name , '//' , Level_2_Name.Name)
# 二級目錄的郵件集合
Mail_2_Messages = Level_2_Name.Items
# 開始查看單個郵件的信息
for yy in Mail_2_Messages:
# 記錄根目錄名稱
Root_Directory_Name_2 = Account_Name.Name
# 記錄一級目錄名稱
Level_1_FolderName_2 = Level_1_Name.Name
# 記錄二級目錄名稱
Level_2_FolderName_2 = Level_2_Name.Name
# 接收時間
if hasattr(yy, 'ReceivedTime'):
ReceivedTime_2 = str(yy.ReceivedTime)[:-6]
else:
ReceivedTime_2 = ''
# 發(fā)件人
if hasattr(yy, 'SenderName'):
SenderName_2 = yy.SenderName
else:
SenderName_2 = ''
# 收件人
if hasattr(yy, 'To'):
to_to_2 = yy.To
else:
to_to_2 = ''
# 抄送人
if hasattr(yy, 'CC'):
cc_cc_2 = yy.CC
else:
cc_cc_2 = ''
# 主題
if hasattr(yy, 'Subject'):
Subject_2 = yy.Subject
else:
Subject_2 = ''
# 郵件MessageID
if hasattr(yy, 'EntryID'):
MessageID_2 = yy.EntryID
else:
MessageID_2 = ''
# 會話主題
if hasattr(yy, 'ConversationTopic'):
ConversationTopic_2 = yy.ConversationTopic
else:
ConversationTopic_2 = ''
# 會話ID
if hasattr(yy, 'ConversationID'):
ConversationID_2 = yy.ConversationID
else:
ConversationID_2 = ''
# 會話記錄相對位置
if hasattr(yy, 'ConversationIndex'):
ConversationIndex_2 = yy.ConversationIndex
else:
ConversationIndex_2 = ''
# 郵件正文內(nèi)容
if hasattr(yy, 'Body'):
EmailBody_2 = yy.Body
else:
EmailBody_2 = ''
else:
pass保存附件
from win32com.client.gencache import EnsureDispatch as Dispatch
# 獲取收件箱目錄(數(shù)字6代表收件箱)
outlook_accounts = Dispatch('Outlook.Application').GetNamespace('MAPI').GetDefaultFolder(6)
# 收件箱下所有郵件
mails = outlook_accounts.Items
# 郵件按時間排序
mail.Sort('[ReceivedTime]', True)
# 獲取第6封郵件的所有附件(下標從1開始)
atts = mails.Item(6)Attachments
# 第6封郵件附件數(shù)量
atts_num = atts.Count
# 遍歷附件對象
for att in atts:
print('att_name: {}'.format(att.FileName))
# 將附件存入D盤
att.SaveAsFile('D:\{}'.format(att.FileName))到此這篇關(guān)于python辦公自動化之讀取本地OUTLOOK客戶端郵件的文章就介紹到這了,更多相關(guān)python讀取本地郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3實現(xiàn)SMTP發(fā)送郵件的實戰(zhàn)指南
,本文詳細介紹 Python3 借助smtplib和email庫實現(xiàn) SMTP 郵件發(fā)送的方法,從基礎到實戰(zhàn)覆蓋多場景,先講解 SMTP 協(xié)議定義及兩核心庫功能,再說明創(chuàng)建 SMTP 對象和使用sendmail方法的核心語法與參數(shù),需要的朋友可以參考下2025-10-10
使用OpenCV對車道進行實時檢測的實現(xiàn)示例代碼
這篇文章主要介紹了使用OpenCV對車道進行實時檢測的實現(xiàn)示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
2020-06-06
python logging 日志輪轉(zhuǎn)文件不刪除問題的解決方法
最近在維護項目的python項目代碼,項目使用了 python 的日志模塊 logging, 設定了保存的日志數(shù)目, 不過沒有生效,還要通過contab定時清理數(shù)據(jù)
2016-08-08
Python Pandas中合并數(shù)據(jù)的5個函數(shù)使用詳解
數(shù)據(jù)合并是數(shù)據(jù)處理過程中的必經(jīng)環(huán)節(jié),pandas作為數(shù)據(jù)分析的利器,提供了五種常用的數(shù)據(jù)合并方式,讓我們看看如何使用這些方法吧!
2022-05-05 
