跳转到内容
搜索文档

发送邮件

使用 Workers 绑定、REST API 或 SMTP 发送你的第一封邮件。

最后更新 查看 MarkdownAgent 设置

通过 Cloudflare Email Service 从你的应用发送邮件。你可以在构建于 Cloudflare Workers 的应用中使用 Workers 绑定(binding),从任意平台使用 REST API,或从任意支持 SMTP 的应用或邮件客户端使用 SMTP

设置你的域名

在使用 Email Sending 之前,请配置您的域名。

  1. 在 Cloudflare 仪表板中,转到 Compute(计算) > Email Service(电子邮件服务) > Email Sending

    Go to Email Sending ↗
  2. 选择 Onboard Domain(接入域名)

  3. 从您的 Cloudflare 账户中选择一个域名。可以选择查看 Cloudflare 将添加到您的域名的 cf-bounce 子域中的 DNS 记录:

    • 用于将退信电子邮件路由到 Cloudflare 的 MX 记录。
    • 用于 SPF 的 TXT 记录,以授权发送电子邮件。
    • 用于 DKIM 的 TXT 记录,以为从您的域名发送的电子邮件提供身份验证。
    • _dmarc.yourdomain.com 上的 DMARC TXT 记录。
  4. 选择 Done(完成)

域名添加成功后,您就可以开始发送电子邮件了。

发送你的第一封邮件

你可以使用 Workers 绑定、REST API 或 SMTP 发送第一封邮件。

如果你在 Cloudflare Workers 上构建,可以使用 Workers 绑定进行原生邮件发送。先创建一个新的 Worker 项目。

  1. 创建新的 Worker 项目:

    npm create cloudflare@latest -- email-service-tutorial

    出现提示时,选择 "Hello World" Worker 模板。

  2. 在 Wrangler 配置文件中添加邮件绑定:

    {
    	"send_email": [
    		{
    			"name": "EMAIL",
    			"remote": true,
    		},
    	],
    }
    [[send_email]]
    name = "EMAIL"
    remote = true
  3. 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>;
  4. 使用 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
  5. 部署你的 Worker:

    npm run deploy

部署后,测试 Worker 能否发送邮件:

  1. 在浏览器中访问你的 Worker URL(在部署输出中显示,例如:https://email-service-tutorial.<your-subdomain>.workers.dev)。
  2. 你应看到类似 Email sent: <message-id> 的响应。
  3. 检查你在 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 参考

后续步骤

现在你已能发送邮件,可继续了解高级功能:

这篇文档对您有帮助吗?