如何在Outlook收到特定主题邮件时触发Python Selenium脚本
在Outlook 365(64位版本2208)中触发Python Selenium脚本的方案
以下是两种实用的实现方式,根据你的需求选择即可:
方法一:Outlook规则 + VBA脚本触发
这种方式利用Outlook自带的规则筛选邮件,通过VBA调用Python脚本,适合习惯用Outlook原生功能的场景。
创建邮件筛选规则
- 打开Outlook,点击「文件」>「管理规则和通知」>「新建规则」
- 选择「对我接收的邮件应用规则」,点击下一步
- 勾选「主题包含特定词语」,点击「特定词语」输入你要匹配的主题关键词,确定后继续下一步
- 勾选「运行脚本」选项(如果看不到这个选项,先按下面步骤启用宏),点击「脚本」准备关联VBA代码
启用Outlook宏功能
- 点击「文件」>「选项」>「信任中心」>「信任中心设置」>「宏设置」
- 选择「启用所有宏」(或「启用签署的宏」,若你会给VBA脚本签名),确定后重启Outlook
编写VBA调用Python脚本
- 按
Alt+F11打开VBA编辑器,在「Project1」下的「ThisOutlookSession」模块中粘贴以下代码:Sub RunSeleniumScript(Item As Outlook.MailItem) Dim shell As Object Set shell = CreateObject("WScript.Shell") ' 替换为你的Python路径和Selenium脚本路径 Dim pythonPath As String Dim scriptPath As String pythonPath = "C:\Python39\python.exe" ' 示例路径,根据实际修改 scriptPath = "C:\Scripts\your_selenium_script.py" ' 示例路径,根据实际修改 shell.Run pythonPath & " " & scriptPath, 0, False Set shell = Nothing End Sub - 保存代码后,回到规则设置界面,选择这个刚创建的脚本,完成规则配置
- 按
方法二:纯Python监控Outlook邮箱
这种方式不需要启用宏,直接用Python监听收件箱,适合偏好纯代码实现的场景。
安装依赖库
打开命令提示符,运行以下命令安装所需工具:pip install pywin32 selenium编写监控+触发脚本
import win32com.client import time from selenium import webdriver def monitor_inbox(): outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") inbox = outlook.GetDefaultFolder(6) # 6代表Outlook默认收件箱 messages = inbox.Items messages.Sort("[ReceivedTime]", True) # 按接收时间倒序排列 # 记录已处理邮件ID,避免重复触发 processed_ids = set() while True: for msg in messages: if msg.EntryID not in processed_ids: # 替换为你要匹配的主题关键词 if "目标主题关键词" in msg.Subject: print(f"触发Selenium任务:收到主题为「{msg.Subject}」的邮件") run_selenium_task() processed_ids.add(msg.EntryID) time.sleep(60) # 每分钟检查一次收件箱,可按需调整间隔 def run_selenium_task(): # 这里写入你的Selenium业务逻辑 driver = webdriver.Chrome() driver.get("https://example.com") # 后续操作:点击、输入等... driver.quit() if __name__ == "__main__": monitor_inbox()运行与后台保持
直接执行该Python脚本即可开始监控,若需要长期后台运行,可借助nssm等工具将脚本注册为Windows服务,避免关闭命令窗口后停止运行。
注意事项
- 方法一中的VBA宏可能被Outlook安全策略拦截,需确保脚本来源安全,或在信任中心添加信任路径
- 两种方法都要保证Python路径、脚本路径的正确性,且当前用户有足够的文件访问权限
内容的提问来源于stack exchange,提问作者Kaustubh bhardwaj
相关产品推荐
相关产品推荐

