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

编写适配macOS的AppleScript实现SpamCop垃圾邮件报告自动化问询

实现SpamCop垃圾邮件报告自动化的AppleScript方案

嘿,作为AppleScript新手想搞定SpamCop的自动报告确实有点棘手——毕竟旧脚本跟着macOS版本迭代失效太常见了。我帮你梳理下适配新版系统的思路和可落地的脚本,一步步来:

先明确SpamCop提交的核心流程

咱们先把手动操作的步骤理清楚,脚本就是把这些步骤自动化:

  • 打开Gmail垃圾邮件文件夹,选中需要报告的真实垃圾邮件
  • 以**attach-mime(完整邮件头)**格式导出邮件
  • 将导出的MIME文件作为附件发送到SpamCop指定的提交邮箱
  • 等待SpamCop分析后,接收并点击确认邮件里的链接完成报告

旧脚本失效的常见原因

大概率是这几个点:

  1. macOS更新后,脚本没拿到辅助功能权限(系统限制了UI模拟操作)
  2. Mail.app的UI元素位置/名称变了,旧的快捷键或点击路径失效(比如你提到的keystroke "4" using command down,得先确认现在它对应的是不是导出MIME的操作)
  3. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:13:16