爱意满满的作品展示区。
1024ba

用 Cloudflare 免费额度搭域名邮箱后,我顺手给它写了个原生 iOS 客户端

  •  
  •   1024ba · 22h 29m ago · 939 views

    CF Mail

    大家好,分享一个自己做了挺久的东西:CF Mail,一个原生 SwiftUI 写的 iPhone / iPad 邮件客户端。

    起因

    之前用 maillab/cloud-mail 在 Cloudflare 上搭了域名邮箱。Worker + D1 + Email Routing ,基本零成本,一个域名可以开无限个地址,注册各种服务时一个站一个邮箱,很爽。

    问题是手机上只能开网页版,没有推送,也没法和 Gmail 、QQ 这些常用邮箱放在一起看。系统自带的「邮件」 App 又连不上它(它没有 IMAP )。所以就自己写了一个客户端,顺带把服务端也改了一版。

    能干什么

    两种账户放在一个 App 里:

    • 普通邮箱:走 IMAP/SMTP 直连,已经内置了 Gmail 、iCloud 、Outlook 、Yahoo 、Fastmail 、QQ/Foxmail 、163/126/yeah 等服务商的预设。QQ 和网易会提示你用「授权码」,不用自己去查服务器地址。「收件箱、已发送、草稿箱、已删除」这些中文文件夹名会自动识别。
    • 自建 CloudMail:填上你的 Worker 地址就能用。如果你有管理员权限,App 里还能直接管用户、角色权限、邀请码、全部邮件和系统设置,不用再开电脑。

    架构

    其他功能:

    • 统一收件箱,以及服务端搜索:可以按主题、正文、发件人、收件人来搜
    • 分开发送:群发时每个收件人各自收到一封,互相看不到对方,发通知、发邀请很好用
    • 富文本编辑、附件、草稿、联系人,回复和转发
    • iPad 分栏布局,大屏上列表和正文可以同时看
    • 新邮件推送( CloudMail 账户,可选)

    隐私这块我比较在意

    • 没有广告,没有第三方统计或跟踪 SDK ,也不需要注册 CF Mail 账号
    • 账号凭据只存在 iOS 钥匙串里,可以用 Face ID / Touch ID 锁住 App
    • 远程图片可以设成默认拦截、每封邮件询问或始终加载,防追踪像素
    • IMAP 邮箱是手机直连邮件服务器,中间不经过我的任何服务器
    • 推送走一个独立的网关。自建的 Worker 只发「有新邮件」这类脱敏事件,不直连 APNs ,也不保存设备 Token
    • 诊断日志只存在本地,并且做了脱敏,只有你手动导出时才会离开手机

    服务端也开源了

    我在上游基础上维护了一个分支:CF Mail cloud-mail

    主要改动有:安全加固(初始化保护、Webhook 签名、密钥加密存储、会话加固)、CC/BCC 、更多邮件 API 、通知钩子、数据库迁移保护,以及一套部署前的契约测试。

    用一个域名加一个 Cloudflare 账号就能跑起来,个人用基本在免费额度内。

    收费说明

    先说清楚,App 有内购:

    • 免费版:1 个 CloudMail 服务器(每个服务器 1 个身份),加最多 10 个 IMAP/SMTP 邮箱,所有功能都能用
    • Pro:不限服务器和账户数量,有订阅版和买断版,价格以 App Store 显示为准 [可在这里写具体价格]

    个人用的话,免费版应该就够了。

    下载

    还在持续迭代,欢迎大家提 bug 和需求,帖子里回复或者去 GitHub 提 issue 都可以。在 V2EX 回复里留言想要的功能,我会优先考虑 🙏

    3 replies  •  2026-11-03 16:18:23 +08:00
    linyongxin
    linyongxin
    21h 31m ago
    1
    非常好的项目,虽然暂时用不上,已经关注并收藏本帖
    Tink
    Tink
    19h 6m ago
    2
    CF Mail 本身不是支持 API 么,直接用这个提醒也可以吧
    ada65line
    ada65line
    18h 52m ago
    3
    非常赞!已经用起来了。有一个疑问,就是我登录管理员账号时,在 cloud-mail 网页版是支持用其他发件人来发邮件的,但这个 App 里面似乎不支持切换发件人。(我现在使用的是免费版 App)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5716 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 03:10 · PVG 11:10 · LAX 19:10 · JFK 22:10
    ♥ Do have faith in what you're doing.