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

如何实现发送Outlook邮件时自动触发Python脚本?

在Outlook发送邮件时触发Python脚本的两种可行方案

方案1:通过Outlook VBA调用Python脚本

Outlook自带VBA宏支持,直接在邮件发送的触发事件里加代码调用Python脚本即可,步骤如下:

  • 打开Outlook,按Alt + F11打开VBA编辑器
  • 左侧项目栏找到ThisOutlookSession,双击打开编辑界面
  • 粘贴这段代码:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    ' 替换成你的Python脚本绝对路径,这里把邮件主题作为参数传给脚本
    Shell "python ""C:\your_script_path\your_script.py"" """ & Item.Subject & """", vbNormalFocus
End Sub
  • 保存后,调整Outlook的宏安全设置(选项→信任中心→信任中心设置→宏设置,临时调低到允许所有宏测试,正式使用建议用签名宏)

这个方法不用额外跑Python后台,只要Outlook处于打开状态就能触发。

方案2:用Python的pywin32库直接监听Outlook事件

不想碰VBA的话,直接用Python监听Outlook的ItemSend事件:

  1. 先安装依赖库:
pip install pywin32
  1. 编写监听脚本:
import win32com.client
import pythoncom

class SendMailListener:
    def OnItemSend(self, Item, Cancel):
        # 这里写你要执行的逻辑,比如记录日志、处理邮件内容
        print(f"触发发送事件:邮件主题 - {Item.Subject}")
        # 示例:把邮件信息写入日志文件
        with open("outlook_send_log.txt", "a", encoding="utf-8") as f:
            f.write(f"{Item.CreationTime} - {Item.Subject}\n")

if __name__ == "__main__":
    # 绑定Outlook应用和事件处理器
    outlook_app = win32com.client.DispatchWithEvents("Outlook.Application", SendMailListener)
    print("已启动Outlook发送事件监听,按Ctrl+C退出")
    # 保持脚本运行以持续监听事件
    pythoncom.PumpMessages()
  1. 运行这个脚本,只要脚本未关闭,每次在Outlook发送邮件都会触发OnItemSend方法里的代码。

注意事项

  • 方案1的宏安全设置可能会拦截代码,测试时可临时放开权限,正式使用建议给宏添加数字签名。
  • 方案2的脚本需要持续运行才能监听事件,可通过系统任务计划将其设置为开机自启动的后台程序。
  • 如果系统无法识别python命令,调用时需写全Python的绝对路径,比如C:\Python310\python.exe。

内容的提问来源于stack exchange,提问作者ronmakh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:55:29