如何用Python通过Outlook添加指定文件夹内的可变名称附件?
解决方案:遍历文件夹添加所有文件为Outlook附件
核心修改说明
原代码存在两处关键问题:HTMLBody字符串未闭合,缺少遍历目标文件夹并批量添加附件的逻辑。以下是修复并完善后的代码,实现单个文件夹内所有文件自动作为附件添加的功能。
完整代码
import win32com.client as win32 import os # 初始化Outlook应用实例 outlook = win32.Dispatch('outlook.application') mail = outlook.CreateItem(0) # 配置邮件基础信息 mail.To = "xxxx@gmail.com; xxxx@gmail.com;" mail.CC = "xxxx@gmail.com" mail.Subject = 'Here are the requested files' mail.HTMLBody = r"""Hello Team, <br><br> Hope you are doing well, please find attached the requested files. <br><br> """ # -------------------------- 批量添加附件逻辑 -------------------------- # 替换为你的目标文件夹路径(使用r前缀避免转义字符问题) target_folder = r"C:\Your\Target\Folder\Path" # 遍历文件夹内所有条目,仅处理文件(跳过子文件夹) for entry in os.scandir(target_folder): if entry.is_file(): # 获取文件完整路径(必须传入完整路径,不能仅传文件名) full_file_path = entry.path # 添加附件到邮件 try: mail.Attachments.Add(full_file_path) print(f"成功添加附件: {full_file_path}") except Exception as e: print(f"添加附件失败 {full_file_path}: {str(e)}") # 弹出邮件窗口供预览/发送 mail.Display(True)
关键细节说明
- 路径处理:必须使用文件的完整绝对路径传给
Attachments.Add(),否则Outlook无法定位文件 - 文件夹遍历:使用
os.scandir()比传统os.listdir()更高效,可直接判断条目是否为文件 - 错误处理:添加
try-except块可捕获无法访问的文件(如权限问题、文件被占用),避免程序崩溃 - 范围控制:当前代码仅处理目标文件夹下的直接文件,如需包含子文件夹内的文件,可添加递归遍历逻辑
内容的提问来源于stack exchange,提问作者Jose Daniel Rojas
相关产品推荐
相关产品推荐

