MacMessageBackup:iMessage 和通话记录备份到 Gmail
MacMessageBackup:iMessage 和通话记录备份到 Gmail
把 macOS 上的短信和通话记录备份到 Gmail,支持日历同步。原生 SwiftUI 界面,菜单栏常驻。
为什么做这个
iMessage 数据只存在本地 ~/Library/Messages/chat.db,换电脑或者重装系统就没了。
之前用过 SMS Backup+ 备份安卓短信到 Gmail,体验很好 —— 邮件搜索功能用来找历史记录非常方便。macOS 上没找到类似的工具,就自己写了一个。
功能
① iMessage & 短信 → Gmail
② 通话记录 → Gmail(保留时长、类型等元数据)
③ 通话记录 → 日历同步(方便在日历里回看)
④ 断点续传 - 记录进度,中断后继续
⑤ 菜单栏常驻 - 实时显示进度如 “52/460”
效果
备份后在 Gmail 里长这样:
- 每条短信/通话是一封邮件
- 自动加 Label 分类(如
SMS 或Call Log`) - 保留原始时间戳,按日期排序
技术实现
数据读取
直接读 SQLite 数据库:
1 | 短信:~/Library/Messages/chat.db |
需要 Full Disk Access 权限,应用首次启动会引导授权。
上传到 Gmail
用 Python 的 imaplib 做批量 IMAP APPEND。
为什么用 Python 而不是纯 Swift?
- Swift 的 IMAP 库不太成熟
- Python 复用连接,批量上传很快(每秒几百条)
- macOS 自带 Python 3,不需要额外依赖
流程:
1 | Swift 读取数据库 → 生成 .eml 文件 → Python 批量 IMAP APPEND → Gmail |
密码安全
Gmail 应用专用密码存在 macOS Keychain 里,不走任何中间服务器。
安装使用
系统要求:macOS 13.0+
步骤
① 下载或编译 app
② 首次运行右键"打开"(绕过 Gatekeeper)
③ 授权 Full Disk Access
④ 填入 Gmail 和应用专用密码
⑤ 点 Backup
生成应用专用密码
Google 账户 → 安全性 → 两步验证 → 应用专用密码
不要用主密码。
代码结构
1 | MacMessageBackup/ |
已知限制
- 只读备份,不能从 Gmail 还原回手机(iOS 系统限制)
- 需要 Full Disk Access 权限
- 没有 Apple 开发者签名,首次运行要手动信任
🔗 项目地址:GitHub - MacMessageBackup
MIT License