Files
cloudflare_temp_email/CHANGELOG.md
Dream Hunter e6cc8e2ffd feat: add Turnstile CAPTCHA for login forms (#767) (#885)
* feat: add Turnstile CAPTCHA for login forms (#767)

Add optional Turnstile verification for admin login, user login, and
address password login via ENABLE_LOGIN_TURNSTILE_CHECK env var.
Does not affect existing Turnstile on address creation / registration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add ENABLE_LOGIN_TURNSTILE_CHECK to wrangler.toml.template

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: ensure openSettings loaded before admin login modal

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add Turnstile to site access password and fix settings field name

- Add Turnstile to site access password modal in Header.vue
- Add /open_api/site_login endpoint for password + Turnstile verification
- Fix settings field name from enableTurnstileLogin to enableLoginTurnstileCheck

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: move login endpoints to open_api/auth.ts

Move /open_api/site_login and /open_api/admin_login from commom_api.ts
to a dedicated open_api/auth.ts file for better code organization.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: change Turnstile check failure status from 500 to 400

Turnstile validation failure is a client error, not a server error.
Change all Turnstile check error responses from 500 to 400.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use unique IDs for multiple Turnstile instances

When multiple modals with Turnstile appear simultaneously (e.g., site
access + admin login), the hardcoded id="cf-turnstile" causes conflicts.
Generate a unique container ID per Turnstile instance to fix this.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: review fixes - cfToken separation, register Turnstile, error codes

- Separate cfToken refs in Login.vue to avoid token sharing between
  login and new address creation Turnstile instances
- Add Turnstile check to user registration endpoint (not just verify_code)
- Show Turnstile on register tab regardless of enableMailVerify
- Pass cf_token in register request body
- Fix site_login error message to use CustomAuthPasswordMsg
- Fix verifyCode Turnstile error status from 500 to 400
- Restore empty line in commom_api.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: separate register Turnstile logic for with/without mail verify

- With mail verify: verify_code already checks Turnstile, register
  skips Turnstile (token is one-time use)
- Without mail verify: register checks Turnstile directly
- Separate loginCfToken for login tab to avoid token sharing with
  register tab Turnstile

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add enableLoginTurnstileCheck to store defaults, simplify changelog

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add /open_api/credential_login for credential login verification

Add credential_login endpoint that verifies both Turnstile token and
JWT credential server-side, replacing the generic verify_turnstile
endpoint. Credential login now validates the JWT before accepting it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: improve login endpoints - hash passwords, expose Turnstile refresh, fix status codes

- site_login/admin_login: always called, verify hashed password + optional Turnstile
- credential_login: always called, verify JWT + optional Turnstile
- Frontend sends hashed passwords instead of plaintext
- Turnstile component exposes refresh method via defineExpose
- Fix Turnstile error status 500→400 in mails_api and telegram_api

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: rename to ENABLE_GLOBAL_TURNSTILE_CHECK and add isGlobalTurnstileEnabled helper

- Rename ENABLE_LOGIN_TURNSTILE_CHECK -> ENABLE_GLOBAL_TURNSTILE_CHECK
- Add isGlobalTurnstileEnabled() in utils.ts: checks env var + Turnstile keys all present
- Backend settings returns enableGlobalTurnstileCheck computed from the helper
- All backend endpoints use isGlobalTurnstileEnabled(c) instead of raw env check
- Update all frontend refs, docs, changelog, and wrangler template

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: use utils.isGlobalTurnstileEnabled instead of named import

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: add E2E tests for turnstile login endpoints

- Test all 3 new /open_api/* endpoints when ENABLE_GLOBAL_TURNSTILE_CHECK is disabled
- Verify settings returns enableGlobalTurnstileCheck: false
- Test admin_login with correct/wrong/empty hashed password
- Test site_login returns 401 when no PASSWORDS configured
- Test credential_login with valid JWT, invalid JWT, empty credential
- Test address_login with empty cf_token works when turnstile disabled
- Add ADMIN_PASSWORDS to E2E wrangler config for admin_login tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: rename test file to login-endpoints.spec.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: validate JWT payload has address field in credential_login

Prevents user tokens or challenge tokens from being accepted as
address credentials since they share the same JWT_SECRET.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: refresh Turnstile token on login failure to allow retry

After a failed login attempt, the consumed Turnstile token is now
refreshed so users can retry without manually refreshing.
Also adds ref to signup Turnstile in UserLogin.vue to refresh after
verification code is sent (single-use token consumed).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: separate Turnstile tokens for signup and reset password flows

Split shared cfToken into signupCfToken and resetCfToken to prevent
single-use Turnstile token conflicts between signup tab and reset
password modal. Each flow now has its own token ref and refreshes
the correct Turnstile widget after use.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update comments from "login turnstile" to "global turnstile"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 00:47:26 +08:00

31 KiB
Raw Blame History

CHANGE LOG

🇨🇳 中文 | 🇺🇸 English

v1.5.0(main)

Features

  • feat: |自动回复| 发件人过滤支持正则表达式匹配,使用 /pattern/ 语法(如 /@example\.com$/),同时保持前缀匹配的向后兼容
  • feat: |Turnstile| 新增全局登录表单 Turnstile 人机验证,通过 ENABLE_GLOBAL_TURNSTILE_CHECK 环境变量控制(#767

Bug Fixes

  • fix: |自动回复| 修复 source_prefix 为空字符串时自动回复不触发的问题(#459空值现在正确匹配所有发件人

Testing

  • test: |E2E| 新增自动回复触发 E2E 测试,覆盖空前缀、前缀匹配、正则匹配和禁用状态场景

Docs

  • docs: |Telegram| 新增每用户邮件推送和全局推送功能说明文档(#769
  • docs: |Webhook| 新增 Telegram Bot、企业微信、Discord 等常用推送平台的 Webhook 模板示例
  • feat: |Webhook| 前端预设模板新增 Telegram Bot、企业微信、Discord 三个模板

Improvements

v1.4.0

Features

  • feat: |用户注册| 新增用户注册邮箱正则校验功能,管理员可配置邮箱格式验证规则
  • feat: |前端| 新增可配置的 Status 菜单按钮,通过 STATUS_URL 环境变量配置状态监控页面链接
  • feat: |SMTP| SMTP 代理服务支持 STARTTLS通过 smtp_tls_certsmtp_tls_key 环境变量配置
  • feat: |Webhook| Webhook 设置页面新增预设模板下拉菜单,支持 Message Pusher、Bark、ntfy 一键填充配置

Bug Fixes

  • fix: |Telegram| 修复 admin 用户通过 Telegram MiniApp 查看邮件时报 Auth date expired 的问题,支持 admin 密码认证查看邮件
  • fix: |Admin API| 修复 /admin/account_settings 在未配置 KV 且 fromBlockList 为空时触发 Cannot read properties of undefined (reading 'put') 的问题
  • fix: |数据库| 修复 DB_INIT_QUERIES 缺少 idx_raw_mails_message_id 索引导致 UPDATE raw_mails ... WHERE message_id = ? 全表扫描的问题,同步 schema.sql 与初始化代码,新增 v0.0.6 迁移逻辑
  • fix: |文档| 修复 User Mail API 文档中错误使用 x-admin-auth 的问题,改为正确的 x-user-token
  • fix: |前端| 修复暗色主题下邮件内容文字看不清的问题,优化纯文本邮件和 Shadow DOM 渲染的暗色模式样式
  • docs: |文档| 新增 Admin 删除邮件、删除邮箱地址、清空收件箱、清空发件箱 API 文档
  • fix: |前端| 修复回复 HTML 格式邮件时丢失原邮件 HTML 内容的问题,优先使用 HTML 原文而非纯文本
  • fix: |安全| 修复回复/转发邮件时的 XSS 风险,使用 DOMPurify 对 HTML 内容进行白名单消毒,对纯文本内容进行 HTML 转义
  • fix: |API| 修复 requset_send_mail_access API 路径拼写错误,改为 request_send_mail_access

Testing

  • test: |E2E| 新增 Docker 化端到端测试环境Playwright + Mailpitcd e2e && npm test 一条命令运行
  • test: |E2E| 覆盖 API 健康检查、地址生命周期、SMTP 发信、收件箱 UI、回复 HTML 邮件及 XSS 防护
  • test: |Worker| 新增 /admin/test/seed_mail 测试端点,仅 E2E_TEST_MODE 启用时可用

Improvements

  • style: |邮件列表| 优化收件箱和发件箱空状态显示,根据邮件数量显示不同提示信息,添加语义化图标
  • feat: |后台管理| 邮箱地址列表来源IP添加 ip.im 查询链接点击可快速查看IP信息
  • docs: |文档| 修复 VitePress 中英文切换路径错误,改用双前缀 locale 配置
  • feat: |IMAP 代理| 重构 IMAP 服务端拆分为独立模块HTTP 客户端、邮箱、消息),使用 deferToThread 异步 HTTP 避免阻塞 Twisted reactor使用后端 id 作为稳定 UID新增 STARTTLS 支持、LRU 消息缓存、session 级 flags 管理、SEARCH 命令支持、JWT 凭证和地址+密码双登录方式,新增完整测试套件
  • fix: |IMAP 代理| 修复 getHeaders() 过滤逻辑、store() 崩溃问题
  • fix: |邮件解析| 修复 parse_email.py 中使用私有属性 _payload 导致编码错误的问题,改用 get_payload(decode=True) 正确解码邮件体

v1.3.0

Features

  • feat: |OAuth2| 新增 OAuth2 邮箱格式转换功能,支持通过正则表达式转换第三方登录返回的邮箱格式(如将 user@domain 转换为 user@custom.domain
  • feat: |OAuth2| 新增 OAuth2 提供商 SVG 图标支持,管理员可为登录按钮配置自定义图标,预置 GitHub、Linux Do、Authentik 模板图标
  • feat: |发送邮件| 未配置发送邮件功能时自动隐藏发送邮件 tab、发件箱 tab 和回复按钮

Bug Fixes

  • fix: |用户地址| 修复禁止匿名创建时,已登录用户地址数量限制检查失效的问题,新增公共函数 isAddressCountLimitReached 统一处理地址数量限制逻辑

Improvements

  • refactor: |代码重构| 提取地址数量限制检查为公共函数,优化代码复用性
  • perf: |性能优化| GET 请求中的地址活动时间更新改为异步执行,使用 waitUntil 不阻塞响应

v1.2.1

Bug Fixes

  • fix: |定时任务| 修复定时任务清理报错 e.get is not a function,使用可选链安全访问 Context 方法

Improvements

  • style: |AI 提取| 暗色模式下 AI 提取信息使用更柔和的蓝色 (#A8C7FA),减少视觉疲劳

v1.2.0

Breaking Changes

  • |数据库| 新增 source_meta 字段,需执行 db/2025-12-27-source-meta.sql 更新数据库或到 admin 维护页面点击数据库更新按钮

Features

  • feat: |Admin| 新增管理员账号页面,显示当前登录方式并支持退出登录(仅限密码登录方式)
  • fix: |GitHub Actions| 修复容器镜像名需要全部小写的问题
  • feat: |邮件转发| 新增来源地址正则转发功能,支持按发件人地址过滤转发,完全向后兼容
  • feat: |地址来源| 新增地址来源追踪功能记录地址创建来源Web 记录 IPTelegram 记录用户 IDAdmin 后台标记)
  • feat: |邮件过滤| 移除后端 keyword 参数,改为前端过滤当前页邮件,优化查询性能
  • feat: |前端| 地址切换统一为下拉组件,极简模式支持切换,主页提供地址管理入口
  • feat: |数据库| 为 message_id 字段添加索引,优化邮件更新操作性能,需执行 db/2025-12-15-message-id-index.sql 更新数据库
  • feat: |Admin| 维护页面增加自定义 SQL 清理功能,支持定时任务执行自定义清理语句
  • feat: |国际化| 后端 API 错误消息全面支持中英文国际化
  • feat: |Telegram| 机器人支持中英文切换,新增 /lang 命令设置语言偏好

v1.1.0

  • feat: |AI 提取| 增加 AI 邮件识别功能,使用 Cloudflare Workers AI 自动提取邮件中的验证码、认证链接、服务链接等重要信息
    • 支持优先级提取:验证码 > 认证链接 > 服务链接 > 订阅链接 > 其他链接
    • 管理员可配置地址白名单(支持通配符,如 *@example.com
    • 前端列表和详情页展示提取结果
    • 需要配置 ENABLE_AI_EMAIL_EXTRACT 环境变量和 AI 绑定
    • 需要执行 db/2025-12-06-metadata.sql 文件中的 SQL 更新 D1 数据库 或者到 admin维护页面点击数据库更新按钮
  • feat: |Admin| 维护页面增加清理 n 天前空邮件的邮箱地址功能
  • fix: 修复自定义认证密码功能异常的问题 (前端属性名错误 & /open_api 接口被拦截)

v1.0.7

  • feat: |Admin| 新增 IP 黑名单功能,用于限制访问频率较高的 API
  • feat: |Admin| 新增 ASN 组织黑名单功能,支持基于 ASN 组织名称过滤请求(支持文本匹配和正则表达式)
  • feat: |Admin| 新增浏览器指纹黑名单功能,支持基于浏览器指纹过滤请求(支持精确匹配和正则表达式)

v1.0.6

  • feat: |DB| update db schema add index
  • feat: |地址密码| 增加地址密码登录功能, 通过 ENABLE_ADDRESS_PASSWORD 配置启用, 需要执行 db/2025-09-23-patch.sql 文件中的 SQL 更新 D1 数据库
  • fix: |GitHub Actions| 修复 debug 模式配置,仅当 DEBUG_MODE 为 'true' 时才启用调试模式
  • feat: |Admin| 账户管理页面新增多选批量操作功能(批量删除、批量清空收件箱、批量清空发件箱)
  • feat: |Admin| 维护页面增加清理未绑定用户地址的功能
  • feat: 支持针对角色配置不同的绑定地址数量上限, 可在 admin 页面配置

v1.0.5

  • feat: 新增 DISABLE_CUSTOM_ADDRESS_NAME 配置: 禁用自定义邮箱地址名称功能
  • feat: 新增 CREATE_ADDRESS_DEFAULT_DOMAIN_FIRST 配置: 创建地址时优先使用第一个域名
  • feat: |UI| 主页增加进入极简模式按钮
  • feat: |Webhook| 增加白名单开关功能,支持灵活控制访问权限

v1.0.4

  • feat: |UI| 优化极简模式主页, 增加全部邮件页面功能(删除/下载/附件/...), 可在 外观 中切换
  • feat: admin 账号设置页面增加 邮件转发规则 配置
  • feat: admin 账号设置页面增加 禁止接收未知地址邮件 配置
  • feat: 邮件页面增加 上一封/下一封 按钮

v1.0.3

  • fix: 修复 github actions 部署问题
  • feat: telegram /new 不指定域名时, 使用随机地址

v1.0.2

  • fix: 修复 oauth2 登录失败的问题

v1.0.1

  • feat: |UI| 增加极简模式主页, 可在 外观 中切换
  • fix: 修复 oauth2 登录时default role 不生效的问题

v1.0.0

  • fix: |UI| 修复 User 查看收件箱,不选择地址时,关键词查询不生效
  • fix: 修复自动清理任务,时间为 0 时不生效的问题
  • feat: 清理功能增加 创建 n 天前地址清理n 天前未活跃地址清理
  • fix: |IMAP Proxy| 修复 IMAP Proxy 服务器,无法查看新邮件的问题

v0.10.0

  • feat: 支持 User 查看收件箱,/user_api/mails 接口, 支持 addresskeyword 过滤
  • fix: 修复 Oauth2 登录获取 Token 时,一些 Oauth2 需要 redirect_uri 参数的问题
  • feat: 用户访问网页时,如果 user token 在 7 天内过期,自动刷新
  • feat: admin portal 中增加初始化 db 的功能
  • feat: 增加 ALWAYS_SHOW_ANNOUNCEMENT 变量,用于配置是否总是显示公告

v0.9.1

  • feat: |UI| support google ads
  • feat: |UI| 使用 shadow DOM 防止样式污染
  • feat: |UI| 支持 URL jwt 参数自动登录邮箱jwt 参数会覆盖浏览器中的 jwt
  • fix: |CleanUP| 修复清理邮件时,清理时间超过 30 天报错的 bug
  • feat: admin 用户管理页面: 增加 用户地址查看功能
  • feat: | S3 附件| 增加 S3 附件删除功能
  • feat: | Admin API| 增加 admin 绑定用户和地址的 api
  • feat: | Oauth2 | Oatuh2 获取用户信息时,支持 JSONPATH 表达式

v0.9.0

  • feat: | Worker | 支持多语言
  • feat: | Worker | NO_LIMIT_SEND_ROLE 配置支持多角色, 逗号分割
  • feat: | Actions | build 里增加 worker-with-wasm-mail-parser.zip 支持 UI 部署带 wasm 的 worker

v0.8.7

  • fix: |UI| 修复移动设备日期显示问题
  • feat: |Worker| 支持通过 SMTP 发送邮件, 使用 zou-yu/worker-mailer

v0.8.6

  • feat: |UI| 公告支持 html 格式
  • feat: |UI| COPYRIGHT 支持 html 格式
  • feat: |Doc| 优化部署文档,补充了 Github Actions 部署文档,增加了 Worker 变量说明

v0.8.5

  • feat: |mail-parser-wasm-worker| 修复 initSync 函数调用时的 deprecated 参数警告
  • feat: rpc headers covert & typo (#559)
  • fix: telegram mail page use iframe show email (#561)
  • feat: |Worker| 增加 REMOVE_ALL_ATTACHMENTREMOVE_EXCEED_SIZE_ATTACHMENT 用于移除邮件附件,由于是解析邮件的一些信息会丢失,比如图片等.

v0.8.4

  • fix: |UI| 修复 admin portal 无收件人邮箱删除调用api 错误
  • feat: |Telegram Bot| 增加 telegram bot 清理无效地址凭证命令
  • feat: 增加 worker 配置 DISABLE_ANONYMOUS_USER_CREATE_EMAIL 禁用匿名用户创建邮箱地址,只允许登录用户创建邮箱地址
  • feat: 增加 worker 配置 ENABLE_ANOTHER_WORKERANOTHER_WORKER_LIST ,用于调用其他 worker 的 rpc 接口 (#547)
  • feat: |UI| 自动刷新配置保存到浏览器,可配置刷新间隔
  • feat: 垃圾邮件检测增加存在时才检查的列表 JUNK_MAIL_CHECK_LIST 配置
  • feat: | Worker | 增加 ParsedEmailContext 类用于缓存解析后的邮件内容,减少解析次数
  • feat: |Github Action| Worker 部署增加 DEBUG_MODE 输出日志, BACKEND_USE_MAIL_WASM_PARSER 配置是否使用 wasm 解析邮件

v0.8.3

  • feat: |Github Action| 增加自动更新并部署功能
  • feat: |UI| admin 用户设置,支持 oauth2 配置的删除
  • feat: 增加垃圾邮件检测必须通过的列表 JUNK_MAIL_FORCE_PASS_LIST 配置

v0.8.2

  • fix: |Doc| 修复文档中的一些错误
  • fix: |Github Action| 修复 frontend 部署分支错误的问题
  • feat: admin 发送邮件功能
  • feat: admin 后台,账号配置页面添加无限发送邮件的地址列表

v0.8.1

  • feat: |Doc| 更新 UI 安装的文档
  • feat: |UI| 对用户隐藏邮箱账号的 ID
  • feat: |UI| 增加邮件详情页的 转发 按钮

v0.8.0

  • feat: |UI| 随机生成地址时不超过最大长度
  • feat: |UI| 邮件时间显示浏览器时区,可在设置中切换显示为 UTC 时间
  • feat: 支持转移邮件到其他用户

v0.7.6

Breaking Changes

UI 部署 worker 需要点击 Settings -> Runtime, 修改 Compatibility flags, 增加 nodejs_compat

worker-runtime

Changes

  • feat: 支持提前设置 bot info, 降低 telegram 回调延迟 (#441)
  • feat: 增加 telegram mini app 的 build 压缩包
  • feat: 增加是否启用垃圾邮件检查 ENABLE_CHECK_JUNK_MAIL 配置

v0.7.5

  • fix: 修复 name 的校验检查

v0.7.4

  • feat: UI 列表页面增加最小宽度
  • fix: 修复 name 的校验检查
  • fix: 修复 DEFAULT_DOMAINS 配置为空不生效的问题

v0.7.3

  • feat: worker 增加 ADDRESS_CHECK_REGEX, address name 的正则表达式, 只用于检查,符合条件将通过检查
  • fix: UI 修复登录页面 tab 激活图标错位
  • fix: UI 修复 admin 页面刷新弹框输入密码的问题
  • feat: support Oath2 登录, 可以通过 Github Authentik 等第三方登录, 详情查看 OAuth2 第三方登录

v0.7.2

Breaking Changes

webhook 的结构增加了 enabled 字段,已经配置了的需要重新在页面开启并保存。

Changes

  • fix: worker 增加 NO_LIMIT_SEND_ROLE 配置, 加载失败的问题
  • feat: worker 增加 # ADDRESS_REGEX = "[^a-z.0-9]" 配置, 替换非法符号的正则表达式,如果不设置,默认为 [^a-z0-9], 需谨慎使用, 有些符号可能导致无法收件
  • feat: worker 优化 webhook 逻辑, 支持 admin 配置全局 webhook, 添加 message pusher 集成示例

v0.7.1

  • fix: 修复用户角色加载失败的问题
  • feat: admin 账号设置增加来源邮件地址黑名单配置

v0.7.0

Breaking Changes

DB changes: 增加用户 passkey 表, 需要执行 db/2024-08-10-patch.sql 更新 D1 数据库

Changes

  • Docs: Update new-address-api.md (#360)
  • feat: worker 增加 ADMIN_USER_ROLE 配置, 用于配置管理员用户角色,此角色的用户可访问 admin 管理页面 (#363)
  • feat: worker 增加 DISABLE_SHOW_GITHUB 配置, 用于配置是否显示 github 链接
  • feat: worker 增加 NO_LIMIT_SEND_ROLE 配置, 用于配置可以无限发送邮件的角色
  • feat: 用户增加 passkey 登录方式, 用于用户登录, 无需输入密码
  • feat: worker 增加 DISABLE_ADMIN_PASSWORD_CHECK 配置, 用于配置是否禁用 admin 控制台密码检查, 若你的网站只可私人访问,可通过此禁用检查

v0.6.1

  • pages github actions && 修复清理邮件天数为 0 不生效 by @tqjason (#355)
  • fix: imap proxy server 不支持 密码 by @dreamhunter2333 (#356)
  • worker 新增 ANNOUNCEMENT 配置, 用于配置公告信息 by @dreamhunter2333 (#357)
  • fix: telegram bot 新建地址默认选择第一个域名 by @dreamhunter2333 (#358)

v0.6.0

Breaking Changes

DB changes: 增加用户角色表, 需要执行 db/2024-07-14-patch.sql 更新 D1 数据库

Changes

worker 配置文件新增 DEFAULT_DOMAINS, USER_ROLES, USER_DEFAULT_ROLE, 具体查看文档 worker配置

  • 移除 apiV1 相关代码和相关的数据库表
  • 更新 admin/statistics api, 添加用户统计信息
  • 更新地址的规则,只允许小写+数字,对于历史的地址在查询邮件时会进行 lowercase 处理
  • 增加用户角色功能,admin 可以设置用户角色(目前可配置每个角色域名和前缀)
  • admin 页面搜索优化, 回车自动搜索, 输入内容自动 trim

v0.5.4

  • 点击 logo 5 次进入 admin 页面
  • 修复 401 时无法跳转登录页面(admin 和 网站认证)

v0.5.3

  • 修复 smtp imap proxy sever 的一些 bug
  • 完善用户/admin 删除收件箱/发件箱的功能
  • admin 可以删除 发件权限记录
  • 添加中文邮件别名配置 DOMAIN_LABELS 文档
  • 移除 mail channels 相关代码
  • github actions 增加 FRONTEND_BRANCH 变量用于指定部署的分支 (#324)

v0.5.1

  • 添加 mail-parser-wasm-worker 用于 worker 解析邮件, 文档
  • 添加校验用户邮箱长度配置 MIN_ADDRESS_LENMAX_ADDRESS_LEN
  • 修复 pages function 未转发 telegram api 问题

v0.5.0

  • UI: 增加本地缓存进行地址管理
  • worker: 增加 FORWARD_ADDRESS_LIST 全局邮件转发地址(等同于 catch all)
  • UI: 多语言使用路由进行切换
  • 添加保存附件到 S3 的功能
  • UI: 增加收取邮件列表 批量删除批量下载

v0.4.6

  • worker 配置文件添加 TITLE = "Custom Title", 可自定义网站标题
  • 修复 KV 未绑定无法删除地址的问题

v0.4.5

v0.4.4

  • 增加 telegram mini app
  • telegram bot 增加 ubind, delete 指令
  • 修复 webhook 多行文本的问题

v0.4.3

Breaking Changes

配置文件 main = "src/worker.js" 改为 main = "src/worker.ts"

Changes

  • telegram bot 白名单配置
  • ENABLE_WEBHOOK 添加 webhook
  • UI: admin 页面使用双层 tab
  • UI: 登录后可直接主页切换地址
  • UI: 发件箱也采用左右分栏显示(类似收件箱)
  • SMTP IMAP Proxy 添加发件箱查看

v0.4.2

v0.4.1

  • 用户名限制最长30个字符
  • 修复 /external/api/send_mail 未返回的 bug (#222)
  • 添加 IMAP proxy 服务,支持 IMAP 查看邮件
  • UI 界面增加版本号显示

New Contributors

v0.4.0

DB Changes/Breaking changes

新增 user 相关表,用于存储用户信息

  • db/2024-05-08-patch.sql

config changs

启用用户注册邮箱验证需要 KV

# kv config for send email verification code
# [[kv_namespaces]]
# binding = "KV"
# id = "xxxx"

function changs

  • 增加用户注册功能可绑定邮箱地址绑定后可自动获取邮箱JWT凭证
  • 增加默认以文本显示邮件文本和HTML邮箱显示方式切换按钮
  • 修复 BUG 随机生成的邮箱名字不合法 #211
  • admin 邮件页面支持邮件内容搜索 #210
  • 修复删除地址时邮件未删除的BUG #213
  • UI 增加全局标签页位置配置, 侧边距配置

v0.3.3

  • 修复 Admin 删除邮件报错
  • UI: 回复邮件按钮, 引用原始邮件文本 #186
  • 添加发送邮件地址黑名单
  • 添加 CF Turnstile 人机验证配置
  • 添加 /external/api/send_mail 发送邮件 api, 使用 body 验证 #194

v0.3.2

What's Changed

  • UI: 添加回复邮件按钮
  • 添加定时清理功能,可在 admin 页面配置(需要在配置文件启用定时任务)
  • 修复删除账户无反应的问题

v0.3.1

DB Changes

新增 settings 表,用于存储通用配置信息

  • db/2024-05-01-patch.sql

Changes

  • ENABLE_USER_CREATE_EMAIL 是否允许用户创建邮件
  • 允许 admin 创建无前缀的邮件
  • 添加 SMTP proxy server,支持 SMTP 发送邮件
  • 修复某些情况浏览器无法加载 wasm 时使用 js 解析邮件
  • 页脚添加 COPYRIGHT
  • UI 允许用户切换邮件展示模式 v-html / iframe
  • 添加 admin 账户配置页面,支持配置用户注册名称黑名单

v0.3.0

Breaking Changes

address 表的前缀将从代码中迁移到 db 中,请将下面 sql 中的 tmp 替换为你的前缀,然后执行。 如果你的数据很重要,请先备份数据库。

注意替换前缀

update
    address
set
    name = 'tmp' || name;

Changes

  • address 表的前缀将从代码中迁移到 db 中
  • admin 账户页面添加收发邮件数量
  • admin 发件页面默认显示全部
  • admin 发件权限页面支持搜索地址
  • admin 邮件页面使用左右分栏 UI

Full Changelog: https://github.com/dreamhunter2333/cloudflare_temp_email/compare/0.2.10...v0.3.0

v0.2.10

  • ENABLE_USER_DELETE_EMAIL 是否允许用户删除账户和邮件
  • ENABLE_AUTO_REPLY 是否启用自动回复
  • fetchAddressError 提示改进
  • 自动刷新显示倒计时

v0.2.9

  • 添加富文本编辑器
  • admin 联系方式,不配置则不显示,可配置任意字符串 ADMIN_CONTACT = "xx@xx.xxx"
  • 默认发送邮件余额,如果不设置,将为 0 DEFAULT_SEND_BALANCE = 1

v0.2.8

v0.2.7

  • Added user interface installation documentation
  • Support email DKIM
  • Rate limiting configuration for /api/new_address

v0.2.6

  • Added admin query outbox page
  • Add admin data cleaning page

2024-04-12 v0.2.5

  • support send email

DB changes:

  • db/2024-04-12-patch.sql

2024-04-10 v0.2.0

Breaking Changes

  • remove ENABLE_ATTACHMENT config
  • use rust wasm to parse email in frontend
  • deprecated api moved to /api/v1

Rust Mail Parser

由于 nodejs 解析 email 的库有些问题,此版本切换到使用 rust wasm 调用 rust 的mail 解析库

  • 速度更快,附件支持好,可以显示邮件的附件图片
  • 解析支持更多 rfc 规范

Due to some problems with nodejs' email parsing library, this version switches to using rust wasm to call rust's mail parsing library.

  • Faster speed, good attachment support, can display attachment images of emails
  • Parsing supports more rfc specifications

DB changs

mails 表废弃,新的 mailraw 文本将直接存入 raw_mails 表. The mails table will be discarded, and the raw text of the new mail will be directly stored in the raw_mails table

Upgrade Step

git checkout v0.2.0
cd worker
wrangler d1 execute dev  --file=../db/2024-04-09-patch.sql --remote
pnpm run deploy
cd ../frontend
pnpm run deploy

注意:对于历史邮件,请使用部署新网页查看旧数据。 Note: For historical messages, use the Deploy New web page to view old data.

git checkout feature/backup
cd frontend
# 创建一个新的 pages, 用于访问旧数据
pnpm run deploy --project-name temp-email-v1

2024-04-09 v0.0.0

release v0.0.0

2024-04-03

DB changes

  • db/2024-04-03-patch.sql

Changes:

  • add delete account
  • add admin panel search

2024-01-13

DB changes

  • db/2024-01-13-patch.sql