如何通过Outlook批量发送文件夹中Excel文件?脚本报错求助
报错原因分析
- 通配符路径不被识别:直接使用
*.xlsx作为附件路径,Outlook无法解析通配符,必须传入具体的单个文件路径。 - 循环逻辑错误:
attachment是字符串类型,for f in attachment会遍历字符串的每个字符而非文件列表,导致每次添加的都是无效的通配符路径。 - 占位符未替换:路径中的
Username是占位符,需要替换为你的实际系统用户名。
修复后的代码
import glob import win32com.client Email_A = row['ICO Mail A'] outlook = win32com.client.Dispatch('outlook.application') mail = outlook.CreateItem(0) mail.To = Email_A mail.Subject = 'Message subject' mail.Body = 'Message body' mail.HTMLBody = '<h2>HTML Message body</h2>' # 可选字段 # 获取文件夹下所有xlsx文件的真实路径 attachment_dir = r"C:\Users\你的真实用户名\Desktop\Work\Automation\SAP_output_scen1" xlsx_files = glob.glob(f"{attachment_dir}/*.xlsx") # 逐个添加附件 for f in xlsx_files: mail.Attachments.Add(f) mail.Send()
额外注意事项
- 确保Outlook已打开并登录对应邮箱账号,避免权限或登录状态问题。
- 如果目标文件夹下无xlsx文件,
xlsx_files会是空列表,不会添加任何附件,可根据需求添加空值判断逻辑。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

