python辦公自動(dòng)化之讀取本地OUTLOOK客戶端郵件
本方法適用于POP服務(wù)器不可用,管理員沒有賦予開啟權(quán)限的情況。你只能讀取本地客戶端的郵件,否則建議直接開發(fā)python程序自動(dòng)登錄服務(wù)器,讀取郵件。
安裝依賴包
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") # 根級(jí)目錄(郵箱名稱,包括Outlook讀取的存檔名稱) Accounts = outlook.Folders for Account_Name in Accounts: print('>> 正在查詢的帳戶名稱:{}'.format(Account_Name.Name)) # 一級(jí)目錄集合(與inbox同級(jí))['收件箱', '發(fā)件箱', '已發(fā)送', 'xxx', 'xxx'] Level_1_Names = Account_Name.Folders for Level_1_Name in Level_1_Names: print('- 正在查詢一級(jí)目錄:{}'.format(Level_1_Name.Name)) # 一級(jí)文件夾的mail合集[所有郵件對(duì)象] Mail_1_Messages = Level_1_Name.Items # 將郵件按接收時(shí)間排序 Mail_1_Messages.Sort("[ReceivedTime]", True) # 開始查看單個(gè)郵件的信息 for xx in Mail_1_Messages: Root_Directory_Name_1 = Account_Name.Name # 記錄根目錄名稱 Level_1_FolderName_1 = Level_1_Name.Name # 記錄一級(jí)目錄名稱 Level_2_FolderName_1 = '' # 一級(jí)目錄肯定沒有二級(jí)目錄,顧留為空 # 接收時(shí)間 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 = '' # 會(huì)話主題 if hasattr(xx, 'ConversationTopic'): ConversationTopic_1 = xx.ConversationTopic else: ConversationTopic_1 = '' # 會(huì)話ID if hasattr(xx, 'ConversationID'): ConversationID_1 = xx.ConversationID else: ConversationID_1 = '' # 會(huì)話記錄相對(duì)位置 if hasattr(xx, 'ConversationIndex'): ConversationIndex_1 = xx.ConversationIndex else: ConversationIndex_1 = '' # 郵件內(nèi)容 if hasattr(xx, 'Body'): EmailBody_1 = xx.Body else: EmailBody_1 = '' # 判斷當(dāng)前查詢的一級(jí)郵件目錄是否有二級(jí)目錄(若有多級(jí)目錄,可以參考此段代碼) if Level_1_Name.Folders: # 二級(jí)目錄的集合 Level_2_Names = Level_1_Name.Folders for Level_2_Name in Level_2_Names: print(' - - 正在查詢二級(jí)目錄:' , Level_1_Name.Name , '//' , Level_2_Name.Name) # 二級(jí)目錄的郵件集合 Mail_2_Messages = Level_2_Name.Items # 開始查看單個(gè)郵件的信息 for yy in Mail_2_Messages: # 記錄根目錄名稱 Root_Directory_Name_2 = Account_Name.Name # 記錄一級(jí)目錄名稱 Level_1_FolderName_2 = Level_1_Name.Name # 記錄二級(jí)目錄名稱 Level_2_FolderName_2 = Level_2_Name.Name # 接收時(shí)間 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 = '' # 會(huì)話主題 if hasattr(yy, 'ConversationTopic'): ConversationTopic_2 = yy.ConversationTopic else: ConversationTopic_2 = '' # 會(huì)話ID if hasattr(yy, 'ConversationID'): ConversationID_2 = yy.ConversationID else: ConversationID_2 = '' # 會(huì)話記錄相對(duì)位置 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 # 郵件按時(shí)間排序 mail.Sort('[ReceivedTime]', True) # 獲取第6封郵件的所有附件(下標(biāo)從1開始) atts = mails.Item(6)Attachments # 第6封郵件附件數(shù)量 atts_num = atts.Count # 遍歷附件對(duì)象 for att in atts: print('att_name: {}'.format(att.FileName)) # 將附件存入D盤 att.SaveAsFile('D:\{}'.format(att.FileName))
到此這篇關(guān)于python辦公自動(dòng)化之讀取本地OUTLOOK客戶端郵件的文章就介紹到這了,更多相關(guān)python讀取本地郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中執(zhí)行shell命令的幾個(gè)方法小結(jié)
這篇文章主要介紹了python中執(zhí)行shell命令的幾個(gè)方法,本文一共給出3種方法實(shí)現(xiàn)執(zhí)行shell命令,需要的朋友可以參考下2014-09-09Python Sqlalchemy如何實(shí)現(xiàn)select for update
這篇文章主要介紹了Python Sqlalchemy如何實(shí)現(xiàn)select for update,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10python實(shí)現(xiàn)簡單flappy bird
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單flappy bird小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12使用Python可設(shè)置抽獎(jiǎng)?wù)邫?quán)重的抽獎(jiǎng)腳本代碼
這篇文章主要介紹了Python可設(shè)置抽獎(jiǎng)?wù)邫?quán)重的抽獎(jiǎng)腳本,抽獎(jiǎng)系統(tǒng)包含可給不同抽獎(jiǎng)?wù)咴O(shè)置不同的權(quán)重,先從價(jià)值高的獎(jiǎng)品開始抽,已經(jīng)中獎(jiǎng)的人,不再參與后續(xù)的抽獎(jiǎng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11python中l(wèi)ist列表復(fù)制的幾種方法(賦值、切片、copy(),deepcopy())
本文主要介紹了python中l(wèi)ist列表復(fù)制的幾種方法(賦值、切片、copy(),deepcopy()),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08python學(xué)生信息管理系統(tǒng)實(shí)現(xiàn)代碼
這篇文章主要介紹了python學(xué)生信息管理系統(tǒng)的實(shí)現(xiàn)代碼,代碼簡單,復(fù)制即可使用,需要的朋友可以參考下2019-12-12