如何使用Python仅从Outlook最新邮件下载附件?
修改后的代码:仅下载指定文件夹最新符合条件邮件的附件
以下是修改后的代码,实现仅下载指定文件夹内最新的、主题匹配的邮件附件:
from pathlib import Path import win32com.client output_dir = Path.home() / r"Documents\Test" output_dir.mkdir(parents=True, exist_ok=True) outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") # 定位到目标子文件夹 target_folder = outlook.GetDefaultFolder(6).Folders("Sample Folder").Folders("Sample Subfolder") messages = target_folder.Items # 按邮件接收时间降序排序,最新的邮件排在最前面 messages.Sort("[ReceivedTime]", True) # 获取最新的一封邮件 latest_message = messages.GetFirst() # 检查该邮件主题是否符合要求 if latest_message.Subject in ('Sample Subject', 'Sample Subject 2'): attachments = latest_message.Attachments # 遍历附件并保存 for attachment in attachments: save_path = output_dir / str(attachment) attachment.SaveAsFile(save_path)
关键修改说明:
- 邮件排序:通过
messages.Sort("[ReceivedTime]", True)对邮件按接收时间降序排列,确保最新邮件排在首位 - 仅处理最新邮件:直接获取排序后的第一封邮件,无需遍历所有邮件,提升效率
- 修正原代码错误:原代码中
subject = messages.GetFirst().Subject属于无效冗余引用,已删除
内容的提问来源于stack exchange,提问作者Aladdin
相关产品推荐
相关产品推荐

