通过 Cloudflare Email Service 从你的应用发送邮件。你可以在构建于 Cloudflare Workers 的应用中使用 Workers 绑定(binding),从任意平台使用 REST API,或从任意支持 SMTP 的应用或邮件客户端使用 SMTP。
在使用 Email Sending 之前,请配置您的域名。
-
在 Cloudflare 仪表板中,转到 Compute(计算) > Email Service(电子邮件服务) > Email Sending。
Go to Email Sending ↗ -
选择 Onboard Domain(接入域名)。
-
从您的 Cloudflare 账户中选择一个域名。可以选择查看 Cloudflare 将添加到您的域名的
cf-bounce子域中的 DNS 记录:- 用于将退信电子邮件路由到 Cloudflare 的 MX 记录。
- 用于 SPF 的 TXT 记录,以授权发送电子邮件。
- 用于 DKIM 的 TXT 记录,以为从您的域名发送的电子邮件提供身份验证。
_dmarc.yourdomain.com上的 DMARC TXT 记录。
-
选择 Done(完成)。
域名添加成功后,您就可以开始发送电子邮件了。
你可以使用 Workers 绑定、REST API 或 SMTP 发送第一封邮件。
如果你在 Cloudflare Workers 上构建,可以使用 Workers 绑定进行原生邮件发送。先创建一个新的 Worker 项目。
-
创建新的 Worker 项目:
npm create cloudflare@latest -- email-service-tutorialyarn create cloudflare email-service-tutorialpnpm create cloudflare@latest email-service-tutorial出现提示时,选择 "Hello World" Worker 模板。
-
在 Wrangler 配置文件中添加邮件绑定:
{ "send_email": [ { "name": "EMAIL", "remote": true, }, ], }[[send_email]] name = "EMAIL" remote = true -
在
src/index.ts中创建你的 Worker 代码:// Configuration - Update these values const YOUR_DOMAIN = "yourdomain.com"; // Replace with your verified domain const RECIPIENT_EMAIL = "recipient@example.com"; // Replace with your email to receive test emails export default { async fetch(request: Request, env: Env): Promise<Response> { // Send a welcome email const response = await env.EMAIL.send({ to: RECIPIENT_EMAIL, from: `welcome@${YOUR_DOMAIN}`, subject: "Welcome to our service!", html: "<h1>Welcome!</h1><p>Thanks for signing up.</p>", text: "Welcome! Thanks for signing up.", }); return new Response(`Email sent: ${response.messageId}`); }, } satisfies ExportedHandler<Env>; -
使用
npx wrangler dev开发 Worker 项目并发送邮件。这会在本地运行你的代码,同时连接到 Cloudflare Email Service(使用远程绑定(remote bindings))。npx wrangler dev # ⎔ Starting remote preview... # Total Upload: 24.96 KiB / gzip: 6.17 KiB # [wrangler:info] Ready on http://localhost:8787 -
部署你的 Worker:
npm run deploy
部署后,测试 Worker 能否发送邮件:
- 在浏览器中访问你的 Worker URL(在部署输出中显示,例如:
https://email-service-tutorial.<your-subdomain>.workers.dev)。 - 你应看到类似
Email sent: <message-id>的响应。 - 检查你在
RECIPIENT_EMAIL中指定的邮箱收件箱。若未看到邮件,请检查垃圾邮件文件夹。
使用一条 curl 命令发送邮件。将 {account_id} 替换为你的 Cloudflare 账户 ID,将 <API_TOKEN> 替换为 API 令牌。
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/send" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"to": "recipient@example.com",
"from": "welcome@yourdomain.com",
"subject": "Welcome to our service!",
"html": "<h1>Welcome!</h1><p>Thanks for signing up.</p>",
"text": "Welcome! Thanks for signing up."
}'成功响应会包含每个收件人的投递状态:
{
"success": true,
"errors": [],
"messages": [],
"result": {
"delivered": ["recipient@example.com"],
"permanent_bounces": [],
"queued": []
}
}更多详情,请参阅 REST API 参考。
只需一条 curl 命令即可发送电子邮件。请将 <API_TOKEN> 替换为具有 Email Sending: Edit 权限的 Cloudflare API 令牌,并将 --mail-from 和 --mail-rcpt 地址替换为您自己的地址。
cat > mail.txt <<EOF
From: welcome@yourdomain.com
To: recipient@example.com
Subject: Welcome to our service!
Thanks for signing up.
EOF
curl --ssl-reqd \
--url "smtps://smtp.mx.cloudflare.net:465" \
--user "api_token:<API_TOKEN>" \
--mail-from "welcome@yourdomain.com" \
--mail-rcpt "recipient@example.com" \
--upload-file mail.txt发件人域名(welcome@yourdomain.com)必须在拥有该 API 令牌的账户上完成 Email Sending 的登记。
有关连接详情、身份验证、响应码以及各语言示例,请参阅 SMTP 参考。
现在你已能发送邮件,可继续了解高级功能: