邮件翻译
Magicmail 内置邮件翻译功能,基于 MyMemory 翻译服务,可在邮件详情页一键将正文翻译为你的目标语言。
工作原理
翻译由后端代理完成(而非前端直连第三方),带来以下好处:
- 隐藏你的 MyMemory 凭据(邮箱 / Key),不会暴露在前端
- 统一处理配额、错误与缓存,避免重复消耗额度
- 源语言自动检测(Autodetect),无需手动选择
前端「翻译」按钮
→ POST /api/v1/mails/:id/translate
→ 校验归属用户 + 读取用户翻译设置
→ 后端代理调用 MyMemory(Autodetect|目标语言)
→ 返回译文(并列展示,不替换原文)配置翻译服务
翻译凭据与目标语言按用户独立配置,互不挤占。
- 进入 设置 → 翻译设置
- 填写以下参数:
| 字段 | 说明 |
|---|---|
| 目标语言 | 翻译后正文显示的语言(如简体中文、英语、日语等) |
| MyMemory 邮箱 | 用于提升免费额度至 5000 词/天 |
| MyMemory Key | 填写后额度不限(留空表示不修改已保存的 Key) |
- 点击 保存翻译设置
凭据安全
- Key 以 AES-256-GCM 加密存储,明文绝不回传前端——保存后输入框留空即代表「保持不变」。
- 接口仅返回「是否已配置邮箱 / Key」的布尔标记,不会泄露你的凭据内容。
使用翻译
- 在邮件列表中选择任意一封邮件
- 点击工具栏的 翻译 按钮
- 正文下方会展开「译文」卡片,显示:
- 检测到的原文语言
- 目标语言
- 翻译后的正文(可点击「收起」关闭)
- 译文与原文并列展示,不会替换原始邮件内容
配额与限制
MyMemory 有两套相互独立的限制,请注意区分:
| 限制 | 阈值 | 说明 |
|---|---|---|
| 单条请求长度 | 500 字符 / 次 | 单次 q 参数上限,长邮件由后端自动分块翻译 |
| 每日总额度 | 匿名 500 词/天/IP;填邮箱 5000 词/天;填 Key 不限 | 共享 IP 的匿名额度极易耗尽 |
提升额度
未配置任何凭据时走匿名额度(500 词/天/IP,多人共享同一出口 IP 时尤其容易耗尽)。建议在 设置 → 翻译设置 中至少填写 MyMemory 邮箱,或填写 Key 以获得不限额度。
隐私说明
翻译时,邮件正文会被发送至第三方 MyMemory(Translated)服务器。请勿用于包含高度敏感信息的邮件。该功能默认需用户主动配置凭据并点击翻译(opt-in),未配置时不会向第三方发送任何内容。
长邮件与分块
为同时满足「单条 500 字符」限制与「完整翻译」,后端会:
- 按段落 / 行将正文切分为多个 ≤ 500 字符的块
- 逐块调用翻译接口,再合并为完整译文
- 对翻译结果做内存缓存(7 天 TTL),避免重复打开同一封邮件重复消耗额度
相关接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/settings/translation | 获取当前用户的翻译设置 |
| PUT | /api/v1/settings/translation | 保存翻译设置(email / key 留空 = 保持不变) |
| POST | /api/v1/translate | 翻译任意文本 |
| POST | /api/v1/mails/:id/translate | 翻译指定邮件正文(校验归属用户) |
网络要求
运行 Magicmail 的服务器需放行到 api.mymemory.translated.net:443 的出站 HTTPS 访问,否则翻译功能不可用。