@dbx-tools/shared-email

中文文档
0.9.206发布于 2026/11/11Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 1万

Browser-safe email sending schemas and inferred types

原始使用文档
文档目录4 节
  1. Validate a drafted message
  2. Validate send results
  3. Load sender choices
  4. Understand schema and transport limits

@dbx-tools/shared-email

Validate browser, route, and agent-tool payloads for @dbx-tools/email without importing Node-only code.

Validate a drafted message

import { email, type EmailMessage } from "@dbx-tools/shared-email";

const message: EmailMessage = email.emailMessageSchema.parse({
  to: ["[email protected]"],
  subject: "Report",
  body: "# Done\nThe report is attached.",
  attachments: [{ filename: "report.csv", content: "a,b\n1,2\n" }],
});

The message schema covers recipients, subject, body content, and attachments. Attachments carry inline string content, an optional encoding, and an optional content type. The schema doesn't accept a local path or URL. Read external content in trusted server code, then pass the resulting string through content.

The package also includes send-result and sender-option schemas for routes, approval UIs, and tests.

Validate send results

import { email } from "@dbx-tools/shared-email";

export function parseEmailResult(value: unknown) {
  return email.emailResultSchema.parse(value);
}

const result = parseEmailResult({
  sent: true,
  recipient: "[email protected]",
  from: "[email protected]",
  messageId: "smtp-message-id",
});

emailResultSchema is the shared shape for SMTP sends and outbox writes. Use it for approval UI state and test assertions.

Load sender choices

import { email } from "@dbx-tools/shared-email";

const senders = email.emailSendersSchema.parse(
  await fetch("/api/email/senders").then((response) => response.json()),
);

The sender schema describes the concrete From choices for the current user, the default sender, and whether the list is restricted by policy.

Understand schema and transport limits

  • emailAttachmentSchema accepts filename, inline content, encoding, and contentType. It doesn't read files, fetch URLs, or validate whether an encoding matches the content.
  • The schemas don't add array minItems constraints because some Model Serving endpoints reject that JSON Schema keyword. The Node sending layer still requires at least one recipient.
  • The Node sending layer limits a message to 20 attachments, 10 MiB per decoded attachment, 20 MiB across attachments, and 200,000 body characters.
  • Outbox mode lists attachment filenames in the rendered preview but doesn't write attachment payloads as separate files.
  • Sender policy, SMTP delivery, approval, and outbox persistence belong to @dbx-tools/email.

Passwordless authentication contracts live in @dbx-tools/shared-auth.

版本与发布记录

@dbx-tools/shared-email 共发布 365 个版本,首次发布于 2026/07/17;过去 12 个月发布了 365 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.206latest2026/11/11今天
0.9.2052026/11/111 天前
0.9.2042026/11/101 天前
0.9.2032026/11/074 天前
0.9.2022026/11/065 天前
0.9.2012026/11/056 天前

关于 @dbx-tools/shared-email 的常见问题

@dbx-tools/shared-email 是什么?

Browser-safe email sending schemas and inferred types

如何安装 @dbx-tools/shared-email?

在项目目录运行 npm install @dbx-tools/shared-email,或使用 pnpm add / yarn add / bun add。

@dbx-tools/shared-email 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dbx-tools/shared-email 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@dbx-tools/shared-email 可以商用吗?

@dbx-tools/shared-email 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@dbx-tools/shared-email 的下载量有多少?

根据 npm 官方下载统计,@dbx-tools/shared-email 在 2026/10/12 – 2026/11/10 这 30 天内被下载 10,110 次,日均约 337 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dbx-tools/shared-email 还在维护吗?

最新版本 0.9.206 发布于 2026/11/11(今天);至今共发布 365 个版本,其中过去 12 个月发布了 365 个;首次发布于 2026/07/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。