使用AppleScript将Apple Mail邮件原始源转换为字符串问题求助
报错根因
该报错并非由邮件内的HTML代码导致,本质是直接将theMessage邮件实例对象强制转换为字符串类型触发的类型不匹配错误,AppleScript原生不支持直接将邮件类实例转换为字符串。
可行解决方案
你需要通过Apple Mail提供的原生属性获取邮件内容字符串,而非直接强转邮件对象,有两种常用实现方案:
方案1:获取完整邮件原始源(最符合你需要检查全量邮件内容的需求,包含邮件头、正文、所有附件元数据、HTML源码等全部信息)
直接调用邮件对象的source属性即可获取纯字符串格式的完整原始邮件内容,代码示例:set mailFullSource to source of theMessage拿到字符串后直接执行你需要的特征匹配逻辑即可。
方案2:仅获取邮件正文内容拼接
如果你不需要检查邮件头、编码信息等内容,仅需要检查正文,可分别获取纯文本正文和HTML正文拼接后做匹配:set mailTextContent to content of theMessage set mailHtmlContent to html content of theMessage set checkContent to mailTextContent & mailHtmlContent
完整规则参考脚本
以下是可直接用于Apple Mail规则的完整AppleScript模板:
using terms from application "Mail" on perform mail action with messages theMessages for rule theRule repeat with eachMessage in theMessages set rawMailContent to source of eachMessage -- 替换为你需要匹配的垃圾邮件特征字符串,支持多条件组合 if rawMailContent contains "待匹配的垃圾邮件特征" then -- 测试阶段可先替换为移动到垃圾邮件文件夹,避免误删 delete eachMessage end if end repeat end perform mail action with messages end using terms from
注意事项
- 字符串匹配默认忽略大小写,如需大小写敏感匹配,可在判断外层包裹
considering case块 - 首次测试建议先注释删除逻辑,添加弹窗通知验证匹配逻辑正确后再开启删除操作
- 如需匹配多个特征,可通过
or连接多个contains判断条件
内容的提问来源于stack exchange,提问作者Porcac1x
相关产品推荐
相关产品推荐

