自动化发送Outlook邮件报错求助:win32com.client调用异常
Outlook自动化创建邮件报错的解决方案
问题重现
使用以下Python代码尝试自动化创建Outlook邮件时出现报错,删除AppData\Local\Temp\gen_py\3.9目录下文件后问题仍未解决:
import win32com.client ol=win32com.client.Dispatch("outlook.application") olmailitem=0x0 #size of the new email newmail=ol.CreateItem(olmailitem)
解决步骤
- 以管理员权限运行脚本:右键点击Python IDE或脚本文件,选择「以管理员身份运行」,Outlook的COM接口调用可能需要更高权限。
- 确保Outlook正常运行:关闭Outlook后重新启动,避免后台进程异常导致COM连接失败。
- 重新生成win32com类型缓存:执行以下代码强制重新生成Outlook的类型库缓存,替代手动删除文件的操作:
import win32com.client win32com.client.gencache.EnsureDispatch("Outlook.Application") - 检查Python与Outlook位数匹配:64位Outlook必须搭配64位Python,32位Outlook对应32位Python,位数不匹配会直接导致COM调用失败。
- 调整Outlook安全设置:Outlook默认阻止自动化脚本访问,可通过注册表修改关闭安全提示(注意此操作存在一定安全风险):
- 打开注册表编辑器,定位到
HKEY_CURRENT_USER\Software\Microsoft\Office\<Outlook版本>\Outlook\Security(例如Office 365对应版本号16.0) - 添加两个DWORD值:
PromptOOMSend设为0,PromptOOMAddressBookAccess设为0。
- 打开注册表编辑器,定位到
内容的提问来源于stack exchange,提问作者Pravin
相关产品推荐
相关产品推荐

