コンテンツにスキップ

ワーカーからメールを送信する

You can send an email about your Worker’s activity from your Worker to an email address verified on Email Routing. This is useful for when you want to know about certain types of events being triggered, for example.

Before you can bind an email address to your Worker, you need to enable Email Routing and have at least one verified email address. 次に、wrangler.tomlファイルに新しいバインディングを作成します:

send_email = [
{type = "send_email", name = "<NAME_FOR_BINDING>", destination_address = "<YOUR_EMAIL>@example.com"},
]

バインディングの種類

バインディングには3つの種類があります:

  • 属性が定義されていない: 属性を定義しない場合、バインディングには制限がありません。これを使用して、任意の確認済みメールアドレスにメールを送信できます Email Routing を通じて。
  • destination_address: destination_address属性を定義すると、ターゲットバインディングが作成されます。これは、選択したメールアドレスにのみメールを送信できることを意味します。例えば、{type = "send_email", name = "<NAME_FOR_BINDING>", destination_address = "<YOUR_EMAIL>@example.com"}
    この特定のバインディングでは、send_email関数を呼び出すときに、nullまたはundefinedをWorkerに渡すことができ、バインディングで指定されたメールアドレスを仮定します。
  • allowed_destination_addresses: この属性を指定すると、許可リストが作成され、リスト内の任意のメールアドレスにメールを送信できます。

You can add one or more types of bindings to your wrangler.toml file. However, each attribute must be on its own line:

send_email = [
{name = "<NAME_FOR_BINDING1>"},
{name = "<NAME_FOR_BINDING2>", destination_address = "<YOUR_EMAIL>@example.com"},
{name = "<NAME_FOR_BINDING3>", allowed_destination_addresses = ["<YOUR_EMAIL>@example.com", "<YOUR_EMAIL2>@example.com"]},
]

例: ワーカー

以下の例を参照して、メールを送信できるワーカーを構築する方法を学びます。この例では、MIMETextを使用しています:

import { EmailMessage } from "cloudflare:email";
import { createMimeMessage } from "mimetext";
export default {
async fetch(request, env) {
const msg = createMimeMessage();
msg.setSender({ name: "GPT-4", addr: "<SENDER>@example.com" });
msg.setRecipient("<RECIPIENT>@example.com");
msg.setSubject("ワーカーで生成されたメール");
msg.addMessage({
contentType: 'text/plain',
data: `おめでとうございます、ワーカーからメールを送信しました。`
});
var message = new EmailMessage(
"<SENDER>@example.com",
"<RECIPIENT>@example.com",
msg.asRaw()
);
try {
await env.SEB.send(message);
} catch (e) {
return new Response(e.message);
}
return new Response("こんにちは、メール送信の世界!");
},
};