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

Python调用Outlook发送邮件执行mail.Send()报com_error错误如何解决

Python调用Outlook发送邮件报错(-2147467260 Operation aborted)的原因与解决方案

报错原因

  • 代码存在拼写错误:实例化Outlook的对象名为OlaApp,后续调用时错误写成olApp、ol.App,变量名不匹配;附件添加属性拼写错误,正确属性为Attachments,代码中写为Attachements,错误的调用会触发COM层操作异常。
  • Outlook安全策略拦截:Outlook默认会拦截非信任程序的自动发送操作,避免恶意程序批量发送垃圾邮件,可预览但无法发送是该类拦截的典型表现。
  • 必填参数缺失:代码中mail.To收件人地址为空,不满足邮件发送的必填要求,会触发发送操作中止。
  • 权限或运行状态异常:Python和Outlook的运行权限不一致(比如一个以管理员身份运行,一个以普通用户身份运行)、Outlook未登录账户处于离线状态、待添加的附件文件被其他程序占用,都会导致该报错。

解决方案

  1. 先修正代码拼写与必填参数问题,参考修正后代码如下:
import win32com.client as win32
import time

# 统一变量名
olApp = win32.Dispatch('Outlook.Application')
olNS = olApp.GetNameSpace('MAPI')
# 修正对象调用错误
mail = olApp.CreateItem(0)

# 填写正确的收件人地址,不可留空
mail.To = 'xxx@xxx.com'
mail.Subject = '邮件主题'
mail.Body = '邮件正文内容'
# 修正附件属性拼写
mail.Attachments.Add(max_file)

# 若需要预览,可加短暂延迟后关闭预览窗口再发送,避免界面资源占用
mail.Display()
time.sleep(1)
mail.GetInspector.Close(0)

mail.Send()
  1. 调整Outlook安全策略:打开Outlook后依次进入「文件」→「选项」→「信任中心」→「信任中心设置」→「编程访问」,选择「从不向我发出可疑活动警告」(企业设备请先确认符合公司IT管理政策),同时确保Python和Outlook的运行权限一致。
  2. 发送前确认附件状态:确保max_file对应的本地文件未被其他程序打开占用,文件路径正确且当前运行的Python程序有该文件的读取权限。
  3. 提前打开Outlook并登录账户,确保Outlook处于在线正常运行状态,不要处于离线、未激活、无响应的状态。

内容的提问来源于stack exchange,提问作者Arvind Kumar Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:54:04