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

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

  •  
  •   1024ba · 3 days ago · 1309 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 回复里留言想要的功能,我会优先考虑 🙏

    Supplement 1  ·  2 days ago
    赠送终身激活码二十枚,先到先得!
    用了激活码最好吱一声,方便其他兄弟姐妹,谢谢。
    另第 10 楼、第 24 楼、第 1024 楼各自在送一枚(如果需要的话请留下联系方式)

    3M8A44A8LEPNJJ7YME
    6N4PXAYXE6LM477ARX
    8T843R7FT336MRM483
    NNFKTEEELJJHNH4TJH
    JM87PA3AEYPJLXRFJX
    XRYHEW7HPW4NPKRYAK
    TKAEAKYNJ7Y77XRKJY
    AYAMNK8TTJRT3T3TJW
    JKNAEPWFTKNMJ3AY4P
    FNRTRYF38WAALEMR6X
    WPHAPLT8ETWRN86KXN
    MH3MNTYRP3XXJK8PNJ
    LHR4K7FYAR7YLRNNA3
    EK86L8KYE4NMKARYNX
    WPFPHN4XJNMM7WENM3
    LM4NRPTA4NP3F8448P
    TNHL8FFKMAEM3HHHFT
    4JH74NYNFRRAPWLMMM
    XWTR46YHLK6XNTJLTT
    HKWL4NJP87MHXHHYPL
    8 replies  •  2026-11-05 04:32:48 +08:00
    linyongxin
    linyongxin
    3 days ago
    1
    非常好的项目,虽然暂时用不上,已经关注并收藏本帖
    Tink
    Tink
    3 days ago
    2
    CF Mail 本身不是支持 API 么,直接用这个提醒也可以吧
    ada65line
    ada65line
    3 days ago
    3
    非常赞!已经用起来了。有一个疑问,就是我登录管理员账号时,在 cloud-mail 网页版是支持用其他发件人来发邮件的,但这个 App 里面似乎不支持切换发件人。(我现在使用的是免费版 App)
    1024ba
    1024ba
    OP
    2 days ago
    4
    @Tink 也是可以的。
    1024ba
    1024ba
    OP
    2 days ago
    5
    @ada65line 关于切换发件人问题,在邮件界面中左上角这里进行不同账户邮件查看切换,这里切换后写信发件人就会自动切换为当前账户邮箱。
    azoon
    azoon
    2 days ago
    6
    4JH74NYNFRRAPWLMMM 已用,感谢。
    App 图标在 iOS18 下,不知道是不是有问题,两个角有黑边。
    ada65line
    ada65line
    2 days ago via iPhone
    7
    @1024ba 好的。 此外 MH3MNTYRP3XXJK8PNJ 已用。感谢!
    1024ba
    1024ba
    OP
    2 days ago
    8
    @azoon 好的,感谢反馈,我这边找一下适配故障修复,谢谢!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   890 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 20:40 · PVG 04:40 · LAX 12:40 · JFK 15:40
    ♥ Do have faith in what you're doing.