email について
Val Town の val でメールを送受信するためのスキルです。受信メールによる処理の起動、送信と返信、動作確認の方法を扱います。
主な機能
- 01受信メールで val を実行
- 02std/email によるメール送信
- 03送信者情報を使った返信
- 04run_file でハンドラーをテスト
- 05配信ログの確認
活用シーン
- 01メールをきっかけに val を実行
- 02val からメールを送信
- 03受信メールに返信
- 04実際の受信を待たずにテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ val-town/ plugins --skill emailインストール後、Claude Code で/emailを入力して読み込まれたか確認します。
詳細
メール
Val Town は両方向に対応しています。メールの受信によって vals を起動(メール型 vals)でき、std/email を使ってメールを送信することもできます。
メールの受信 — メール型 vals
メール型 vals(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 を使用してください。
メッセージ 1 件あたりの上限は 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 を編集した後は、実際の受信メールを待つ代わりに、サンプルの Email ペイロードを使って run_file を実行し、ハンドラーを手動で呼び出してください。送信専用の vals では、同じ方法でスクリプトを実行し、get_logs で配信エラーを確認してください。