@dbx-tools/ 共享电子邮件
验证浏览器、路由和代理工具有效载荷 @dbx-tools/email 无
导入只节点代码 .
验证已起草的电文
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" }],
});
消息计划涵盖收件人,主题,身体内容,以及附件.
附件包含内行字符串内容、可选编码和可选
内容类型。 计划不接受本地路径或URL. 外部读取
,然后将由此产生的字符串通过
content。 。 。 .
该套件还包括发送结果和发送者选择的路线计划, 批准UI,和测试.
验证发送结果
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 是 SMTP 发送和发送框写入的共享形状 。 用这个
以批准UI的说法和测试断言.
装入发件人选项
import { email } from "@dbx-tools/shared-email";
const senders = email.emailSendersSchema.parse(
await fetch("/api/email/senders").then((response) => response.json()),
);
寄件人计划描述混凝土 From 当前用户的选择,
默认发送者,以及列表是否受策略限制.
理解计划和运输限制
emailAttachmentSchema接受filename内置content, (中文(简体) ),encoding,以及contentType。它不读取文件、获取 URL,也不验证是否 编码符合内容 .- 计划不添加阵列
minItems限制,因为一些模式服务 结尾拒绝JSON Schema关键词. 节点发送层仍然 需要至少一个收件人. - 节点发送层将信件限制在 20 个附件, 每个解码 10 MiB 附件,20个MiB横跨附件,还有20万个身体字符.
- 发件箱模式在已提供预览中列出附件文件名, 但不会 将附件有效载荷写入单独的文件.
- 发件人政策、SMTP的交付、批准和发件箱的持久性属于 @dbx-tools/电子邮件。 。 。 .
无密码认证合同存在 @dbx-tools/ shared- auth (英语)。 。 。 .