关于 email
这是用于在 Val Town vals 中收发邮件的技能,涵盖邮件触发处理程序、发送与回复,以及测试邮件处理和投递情况。
主要功能
- 01处理邮件触发的 val
- 02使用 std/email 发送邮件
- 03根据发件人信息回复
- 04用 run_file 测试处理程序
- 05检查投递日志
适用场景
- 01通过邮件触发 val
- 02从 val 发送邮件
- 03回复收到的邮件
- 04无需等待真实邮件来测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ val-town/ plugins --skill email安装后在 Claude Code 中输入/email确认已加载。
详细介绍
电子邮件
Val Town 支持双向邮件处理:val 可以由收到的邮件触发(邮件类型的 val),也可以通过 std/email 发送邮件。
接收邮件 — 邮件类型的 val
邮件类型的 val(fileType: "email")会在邮件送达分配给该 val 的地址时运行。
// Learn more: https://docs.val.town/vals/email/
// Email type: {
// from: string,
// to: string[],
// subject?: string,
// text?: string,
// html?: string,
// attachments: File[],
// headers: Record<string, string>
// }
export default async function (e: Email) {
console.log(e.from, e.subject, e.text);
}
文件必须包含一个 export — 处理程序使用 export default。
每封邮件最大 30MB,包括附件。更大的邮件将被拒收。
读取分配的地址
列出文件或创建邮件类型的文件时,响应中会包含 links.email — 触发此 val 的地址。始终从 API 响应中读取该地址。切勿自行构造电子邮件地址 — 地址格式由平台决定,且可能会更改。
发送邮件 — std/email
发送邮件时,从 std/email 导入:
import { email } from "https://esm.town/v/std/email";
await email({
to: "[email protected]",
subject: "Hello",
text: "Message body",
});
std/email 将 email 导出为发送函数本身 — 直接调用它(email({ ... }));它没有 email.send 方法。它接受你预期的参数:to、subject、text、html,以及 from、cc、bcc、replyTo、attachments 和 headers。如果未指定 to 字段,邮件默认会发送给 val 所有者的地址。
回复收到的邮件
结合两者 — 在邮件类型的处理程序中读取收到邮件的 from,然后调用 email 回复:
import { email } from "https://esm.town/v/std/email";
export default async function (e: Email) {
await email({
to: e.from,
subject: `Re: ${e.subject ?? ""}`,
text: "Got it, thanks!",
});
}
验证更改
编辑邮件类型的 val 后,使用 run_file 和示例 Email 负载手动调用处理程序,而不是等待实际收到邮件。对于仅用于发送邮件的 val,以相同方式运行脚本,并检查 get_logs 中是否有投递错误。
评论
支持 Markdown