编写适配macOS的AppleScript实现SpamCop垃圾邮件报告自动化问询
实现SpamCop垃圾邮件报告自动化的AppleScript方案
嘿,作为AppleScript新手想搞定SpamCop的自动报告确实有点棘手——毕竟旧脚本跟着macOS版本迭代失效太常见了。我帮你梳理下适配新版系统的思路和可落地的脚本,一步步来:
先明确SpamCop提交的核心流程
咱们先把手动操作的步骤理清楚,脚本就是把这些步骤自动化:
- 打开Gmail垃圾邮件文件夹,选中需要报告的真实垃圾邮件
- 以**attach-mime(完整邮件头)**格式导出邮件
- 将导出的MIME文件作为附件发送到SpamCop指定的提交邮箱
- 等待SpamCop分析后,接收并点击确认邮件里的链接完成报告
旧脚本失效的常见原因
大概率是这几个点:
- macOS更新后,脚本没拿到辅助功能权限(系统限制了UI模拟操作)
- Mail.app的UI元素位置/名称变了,旧的快捷键或点击路径失效(比如你提到的
keystroke "4" using command down,得先确认现在它对应的是不是导出MIME的操作) - SpamCop的提交邮箱或确认邮件格式有细微变化
适配新版macOS的AppleScript脚本
下面是调整后的脚本,你可以根据自己的实际情况修改:
-- 1. 激活Mail.app并选中目标垃圾邮件 tell application "Mail" activate -- 替换成你自己的Gmail账号和垃圾邮件文件夹名称 set junkMailFolder to mailbox "垃圾邮件" of account "你的Gmail账号" set selectedMessages to selection of junkMailFolder if selectedMessages is {} then display dialog "请先选中要报告的垃圾邮件!" buttons {"确定"} default button 1 return end if end tell -- 2. 导出完整MIME格式的邮件(适配新版Mail.app) tell application "System Events" tell process "Mail" -- 先确认cmd+4是否还对应导出MIME操作,不对的话换成正确快捷键/UI路径 keystroke "4" using command down delay 1 -- 给系统反应时间 keystroke return -- 确认保存到默认位置(比如桌面) end tell end tell -- 3. 将MIME文件作为附件发送到SpamCop提交邮箱 tell application "Mail" set newMessage to make new outgoing message with properties {subject: "", content: ""} tell newMessage -- 替换成你的SpamCop专属提交邮箱 make new to recipient with properties {address: "你的SpamCop提交邮箱@spamcop.net"} -- 这里假设导出的邮件存在桌面,文件名根据实际情况调整 make new attachment with properties {file name: (path to desktop as text) & "导出的邮件.eml"} at after last paragraph send end tell end tell -- 4. 自动处理SpamCop的确认邮件 delay 300 -- 等待5分钟(可根据网络速度调整) tell application "Mail" set inboxMailbox to mailbox "收件箱" of account "你的Gmail账号" set confirmationMessages to every message of inboxMailbox whose subject contains "SpamCop确认" if confirmationMessages is not {} then set latestConfirmation to item 1 of confirmationMessages activate open latestConfirmation -- 模拟点击邮件里的确认链接 tell application "System Events" tell process "Mail" click link 1 of scroll area 1 of window 1 end tell end tell else display dialog "未收到SpamCop的确认邮件,请稍后重试!" buttons {"确定"} default button 1 end if end tell
关键注意事项
- 权限一定要开:去「系统设置>隐私与安全性>辅助功能」,把运行脚本的工具(比如Script Editor、Terminal)添加进去,否则UI模拟操作会直接失败
- 替换专属信息:把脚本里的账号、邮箱、文件夹名称全换成你自己的
- 验证快捷键:手动在Mail.app里测试
cmd+4是不是真的能导出MIME格式邮件,如果不是,改成当前对应的快捷键,或者用UI路径(比如点击「文件>导出为MIME」) - 调整等待时间:
delay 300是等确认邮件的时间,网速慢就调长一点 - 扩展筛选逻辑:如果想自动筛选垃圾邮件,可以加个判断,比如根据发件人黑名单、主题关键词来自动选中邮件
如果运行时遇到UI点击失败的问题,推荐用Xcode里的Accessibility Inspector查看Mail.app当前的UI元素路径,替换脚本里对应的部分就行。
内容的提问来源于stack exchange,提问作者Julio Takada
相关产品推荐
相关产品推荐

