Python 3.14调用Outlook实现邮件发送功能时遭遇pywintypes.com_error: (-2147467260, 'Operation aborted', None, None)错误的解决方法
解决Outlook自动化中的
pywintypes.com_error: (-2147467260, 'Operation aborted')错误 我之前碰到过一模一样的问题,这个报错大概率是Outlook的安全机制拦截、后台进程异常或者权限不足导致的,给你几个实用的解决方向:
清理Outlook残留进程后重启
很多时候,就算你关闭了Outlook窗口,后台还是会残留异常的OUTLOOK.EXE进程,导致COM对象交互失败。打开任务管理器(按下Ctrl+Shift+Esc),找到所有名为OUTLOOK.EXE的进程,全部结束掉,然后重新打开Outlook,再运行你的脚本试试。调整Outlook的安全设置(测试用)
Outlook默认会阻止自动化程序创建或发送邮件,这是它的安全策略。你可以临时调整设置来验证:- 打开Outlook,点击「文件」→「选项」→「信任中心」→「信任中心设置」
- 进入「程序访问」页面,在「可疑程序活动警告」区域选择「从不警告我可疑活动」
- 另外,也可以在「宏设置」里选择「启用所有宏」
注意:这两个设置都有一定安全风险,测试完成后记得改回默认的安全配置。
以管理员身份运行你的Python脚本
权限不足也会导致无法正常调用Outlook的COM接口。右键点击你的Python脚本,选择「以管理员身份运行」;或者打开命令提示符/终端时选择「以管理员身份运行」,再执行脚本命令。修改代码,直接创建新的Outlook实例
你的代码里先尝试获取已激活的Outlook实例,但如果这个实例处于锁定、未登录或者异常状态,就会触发报错。可以直接改用Dispatch创建全新的实例:import win32com.client as win32 def testEmail(): # 直接创建新的Outlook应用实例 outlook = win32.Dispatch("Outlook.Application") # 创建新邮件项 mail = outlook.CreateItem(0) # 0代表邮件类型 # 设置邮件属性 mail.Subject = "Hello from Python!" mail.Body = "This is a test email sent using Python and Outlook." mail.To = "recipient@example.com" # 替换为实际收件人邮箱 # 发送邮件 mail.Send() testEmail()确认Outlook本身可以正常工作
先手动在Outlook里发送一封测试邮件,确保你的邮箱账户配置正确、可以正常收发邮件。如果Outlook本身无法正常运行,自动化脚本肯定也会失败。
内容的提问来源于stack exchange,提问作者Searcher512




