簡體   English   中英

使用 Python 從 Outlook 收件箱中獲取所有電子郵件並將它們保存到本地文件夾中

[英]Get all emails from outlook inbox using Python and save them into a local folder

我想使用 Python 從 Outlook 的收件箱文件夾中保存我所有的電子郵件。 我可以保存第一條或最后一條消息,但無法理解如何獲取文件夾的所有消息。 因此,我試圖使用循環來迭代所有郵件的代碼。 我嘗試使用以下代碼:

from win32com.client import Dispatch
import os
import re
os.chdir("D:\\emails")

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
print(inbox)
messages = inbox.items
message = messages.GetLast()
name = str(message.subject)
name = re.sub('[^A-Za-z0-9]+', '', name)+'.msg'
for message in messages:
   message.SaveAs(os.getcwd()+'//'+name)

這不會給我任何錯誤,而是只保存最后一封郵件,而不是保存所有電子郵件。 你能幫我糾正一下代碼嗎? 謝謝。

問題在下面

message = messages.GetLast()
name = str(message.subject)

message.SaveAs(os.getcwd()+'//'+name)

您計算一次名稱(在循環之前)並在循環中使用它。

您需要在循環期間計算名稱。

完整的代碼看起來像這樣......(我從 balderman 那里得到了這個答案)

from win32com.client import Dispatch
import os
import re
os.chdir("D:\\email")

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.items
for message in messages:
    message = messages.GetNext()
    name = str(message.subject)
    name = re.sub('[^A-Za-z0-9]+', '', name)+'.msg'    
    message.SaveAs(os.getcwd()+'//'+name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM