最近有同事问我怎么结合Outlook来做自动化,简单聊聊
遇到了什么问题?
同事有一些例行任务需要用到Outlook, 比如:
- 不定期从Vendor通过Email收到数据文件, 进行校验和处理。
- 不定时收到服务器配置,需要在本地更新
- 特定邮件要备份在Outlook以外
解决方式呢?
- 在Outlook中配置收件规则, 收到特定邮件触发VBA脚本执行。
- 在VBA脚本中获取EmailItem的EntryID,调用外部脚本并将EntryID作为参数参数
- 外部脚本通过EntryID重新获取EmailItem, 接下来就是用擅长的语言解决简单的问题了
import argparse
import sys
import time
import win32com.client
from winotify import Notification
parser = argparse.ArgumentParser()
parser.add_argument(f'--id')
parsed, _ = parser.parse_known_args(sys.argv[1:])
stoast = Notification(app_id="outlook automation",
title="收到配置更新邮件",
msg=f"收到配置邮件")
stoast.show()
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
message = outlook.GetItemFromID(parsed.id)
etoast = Notification(app_id="outlook automation",
title="配置更新完成",
msg=f"邮件正文: {message.Body}")
etoast.show()
这样做的好处呢?
- 少干点重复的事情