VMAIL

📫 Open source temporary email tool. 开源临时邮箱工具。
这个项目部署起来可能会有难度,高手可直接看作者的教程部署。

作者仓库已恢复。

🌈 特点

  • 🎯 隐私友好,无需注册,开箱即用
  • ✨ 更好的 UI 设计,更加简洁
  • 🚀 快速部署,无需服务器

原理:

  • Email worker 接收电子邮件
  • 前端显示电子邮件(remix)
  • 邮件存储(sqlite)
worker接收电子邮件 -> 保存到数据库 -> 客户端查询电子邮件

Demo

作者的demo:vmail.dev
我的demo:50555.xyz

1
1
2
2

部署教程

准备工作

  • Cloudflare 账户与托管在 Cloudflare 上的域名
  • turso sqlite 数据库(个人免费计划足够)
  • Vercelfly.io 账号部署前端用户界面

步骤

注册turso数据库

注册一个 turso 账户,注册后,系统会提示您创建一个数据库,然后创建数据库(名称随意),并创建一个emails

⚠️ 注意:左上角有一个加号按钮,尝试点击它没有任何提示或效果,所以使用了 turso 提供的 cli 来初始化表。

Linux (或 mac/windows) 终端执行:

# 安装(安装后记得重启终端生效)
curl -sSfL https://get.tur.so/install.sh | bash

# 登录账户
turso auth login

# 连接到您的Turso数据库
turso db shell <database-name>

执行完上方第一行代码后重启终端,执行第二行代码按照提示登录,如果无法调用浏览器进行登录,则可以使用turso auth login --headless然后将登陆后的export内容粘贴到终端回车,然后将上方最后一行代码改成你创建的数据库名称后执行。
然后执行下方sql脚本

点此展开查看sql脚本

CREATE TABLE `emails` (
 `id` text PRIMARY KEY NOT NULL,
 `message_from` text NOT NULL,
 `message_to` text NOT NULL,
 `headers` text NOT NULL,
 `from` text NOT NULL,
 `sender` text,
 `reply_to` text,
 `delivered_to` text,
 `return_path` text,
 `to` text,
 `cc` text,
 `bcc` text,
 `subject` text,
 `message_id` text NOT NULL,
 `in_reply_to` text,
 `references` text,
 `date` text,
 `html` text,
 `text` text,
 `created_at` integer NOT NULL,
 `updated_at` integer NOT NULL
);


执行完命令后的数据库那里会出现emails的表
1

部署 email worker

vmail/apps/email-worker/wrangler.toml 文件中填写必要的环境变量。

  • TURSO_DB_AUTH_TOKEN(第1步中的turso表信息,点击“Generate Token”读写权限
  • TURSO_DB_URL(例如 libsql://db-name.turso.io)
  • EMAIL_DOMAIN (你自己的域名,如 vmail.dev,即根域)
如果您不执行此步骤,可以在Cloudflare的 worker settings 中添加环境变量

这里多说一点关于node环境和pnpm的安装,我是使用Ubuntu进行操作的,其他系统可询问GPT获取对应命令。这里我直接粘贴GPT4给我的回答。收缩栏中的GPT回答目的就是为了执行收缩栏最底部的三行指令。

依赖安装

点此展开查看相关命令

安装 Node.js

pnpm 需要 Node.js 环境。你可以通过 NodeSource 或 nvm(Node Version Manager)来安装 Node.js。这里使用 nvm 来安装,因为它允许你安装多个版本的 Node.js 并在它们之间轻松切换。

首先,安装 nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

安装完成后,关闭并重新打开终端或者运行以下命令来应用更改:

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

然后,通过 nvm 安装 Node.js。这里安装最新版本的 Node.js:

nvm install node
安装 pnpm

现在你已经有了 Node.js 环境,可以通过运行以下命令来安装 pnpm

npm install -g pnpm
克隆仓库并安装依赖

现在,你的环境已经准备好了,可以执行你的命令了:

git clone https://github.com/oiov/vmail
cd vmail
pnpm install

这些步骤将会克隆 vmail 仓库到你的本地机器,然后进入仓库目录,并使用 pnpm 安装所有依赖。

安装wrangler cli 并在本地登录

这一步在作者的教程中并未详细说明,这里我依旧粘贴GPT4给我的回答

点此展开查看相关内容


安装 Wrangler :通过 npm(Node.js 的包管理器,应该在安装 Node.js 时一同安装了)安装 Wrangler。运行以下命令:

npm install -g wrangler

这将全局安装 Wrangler CLI。

安装 Wrangler CLI 之后,你需要使用它登录到你的 Cloudflare 账户。这样做可以让 Wrangler 配置访问你的 Workers。
登录到 Cloudflare :运行以下命令并遵循提示登录到你的 Cloudflare 账户:

wrangler login

这个命令会打开你的浏览器,要求你登录到 Cloudflare 并授权 Wrangler 访问你的 Cloudflare 账户。完成这些步骤后,Wrangler 将能够部署和管理 Workers。

如果这一步无法自动跳转浏览器登录并回调终端,则可以使用下面操作进行登录。

步骤 1: 创建 API Token

首先,你需要在 Cloudflare 的网站上创建一个 API Token。

  1. 登录到你的 Cloudflare 账户并进入 Cloudflare Dashboard.
  2. 点击右上角的你的账户名称,然后选择 "My Profile"(我的资料)。
  3. 切换到 "API Tokens"(API 令牌)标签页。
  4. 点击 "Create Token"(创建令牌)按钮。
  5. 你可以选择使用一个模板,例如 "Edit Cloudflare Workers"(编辑 Cloudflare Workers),这会自动赋予令牌所需的权限。或者,你可以选择 "Create Custom Token"(创建自定义令牌)来手动选择权限。
  6. 根据你的需要设置令牌权限,确保至少包括对 Workers 和相关资源的编辑权限。
  7. 完成设置后,点击 "Continue to summary"(继续到摘要),然后 "Create Token"(创建令牌)。
  8. 复制创建的 API Token。确保保存好这个令牌,因为它不会再次显示。

步骤 2: 使用 Wrangler 配置 API Token

在你拥有了 API Token 后,下一步是在 Wrangler CLI 中使用这个令牌。

  1. 打开你的终端或命令提示符。
  2. 运行以下命令来配置 Wrangler 使用你的 API Token:

    export CF_API_TOKEN="your_api_token_here"

完成这些步骤后,Wrangler 将使用你提供的 API Token 进行认证,这样你就可以开始部署和管理你的 Cloudflare Workers 了。

部署 Worker

在成功安装 Wrangler 并登录到你的 Cloudflare 账户之后,你可以继续部署你的 Worker 了。
进入 apps/email-worker 目录
如果你还没有,首先需要进入到 apps/email-worker 目录中:

cd apps/email-worker

使用 pnpm 运行部署脚本
确保你已经在你的项目中安装了所有依赖(如果你在开始时已经运行了 pnpm install,那么应该已经安装好了)。现在,你可以使用 pnpm 运行部署脚本:

pnpm run deploy

这个命令将执行 package.json 文件中名为 deploy 的脚本,该脚本应该被配置为使用 Wrangler 部署你的 Worker 到 Cloudflare。确保你已经按照项目的要求配置了 wrangler.toml 文件。

配置电子邮件路由规则

设置“Catch-all”操作为发送到 email worker
1

Vercel或fly.io上部署Remix应用程序

确保在部署期间准备并填写以下环境变量(.env.example):

变量名说明示例
COOKIES_SECRET必填,cookie加密密钥(自己设置)my-secret-key
TURNSTILE_KEY必填,网站验证所需的Turnstile Keymy-turnstile-key
TURNSTILE_SECRET必填,网站验证所需的Turnstile Secretmy-turnstile-secret
TURSO_DB_RO_AUTH_TOKEN必填,turso数据库只读凭据my-turso-db-ro-auth-token
TURSO_DB_URL必填,turso数据库URLlibsql://db-name.turso.io
EMAIL_DOMAIN必填,域名后缀vmail.dev
EXPIRY_TIME可选,过期时间,单位秒,默认8640086400

TURSO_DB_RO_AUTH_TOKEN重新生成一个只读类型的;TURNSTILE_KEY和TURNSTILE_SECRET可在ClodFlare侧栏找到,新建站点即可获取

Vercel:

推荐使用一键部署按钮(一步 fork + deploy 此仓库):

Deploy with Vercel

或手动将代码推送到你的 Github 仓库,并在 Vercel 面板中创建项目。选择 New project,然后导入对应的 Github 仓库,填写环境变量,选择 Remix 框架,点击 Deploy,等待部署完成。

部署完后继续点击 Countinu to Dashboard,进入 Settings -> General,修改下面设置:


部署成功后在 cloudflare 添加域名解析(A记录)到对应平台,就可以愉快的玩耍了
然后进入 Deployments 重新部署一次,或向 github 推送代码重新触发部署。
fly.io:

cd vmail/apps/remix 
fly launch

开源地址

Loading...

🏷本文标签:Vercel,️cfworkers,️tempmail,️remix,️Vmail
最后修改:2024 年 04 月 11 日
如果觉得我的文章对你有用,请随意赞赏