You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:20:20