Pular para o conteúdo

Specify recipients

Specify multiple recipients, CC and BCC, and named addresses when sending with Email Service.

Atualizado em Ver como Markdown

Email Service lets you specify recipients in several ways — multiple recipients, CC and BCC, and named addresses — using the Workers binding, the REST API, or SMTP. The combined number of addresses across to, cc, and bcc must not exceed 50. See Limits.

Multiple recipients

const response = await env.EMAIL.send({
	to: ["user1@example.com", "user2@example.com", "user3@example.com"],
	from: { email: "newsletter@yourdomain.com", name: "Newsletter Team" },
	subject: "Monthly Newsletter",
	html: "<h1>This month's updates</h1>",
	text: "This month's updates",
});
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": ["user1@example.com", "user2@example.com"],
    "from": { "address": "newsletter@yourdomain.com", "name": "Newsletter Team" },
    "subject": "Monthly Newsletter",
    "html": "<h1>This month'\''s updates</h1>",
    "text": "This month'\''s updates"
  }'

List every recipient in the To header and pass one --mail-rcpt flag per address.

cat > mail.txt <<EOF
From: Newsletter Team <newsletter@yourdomain.com>
To: user1@example.com, user2@example.com
Subject: Monthly Newsletter

This month's updates
EOF

curl --ssl-reqd \
  --url "smtps://smtp.mx.cloudflare.net:465" \
  --user "api_token:<API_TOKEN>" \
  --mail-from "newsletter@yourdomain.com" \
  --mail-rcpt "user1@example.com" \
  --mail-rcpt "user2@example.com" \
  --upload-file mail.txt

CC and BCC

const response = await env.EMAIL.send({
	to: "customer@example.com",
	cc: ["manager@example.com"],
	bcc: ["archive@example.com"],
	from: "orders@yourdomain.com",
	replyTo: "support@yourdomain.com",
	subject: "Order Confirmation #12345",
	html: "<h1>Your order is confirmed</h1>",
	text: "Your order is confirmed",
});
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": "customer@example.com",
    "cc": ["manager@example.com"],
    "bcc": ["archive@example.com"],
    "from": "orders@yourdomain.com",
    "reply_to": "support@yourdomain.com",
    "subject": "Order Confirmation #12345",
    "html": "<h1>Your order is confirmed</h1>",
    "text": "Your order is confirmed"
  }'

Add a Cc header for CC recipients. BCC recipients are added as --mail-rcpt flags but omitted from the headers.

cat > mail.txt <<EOF
From: orders@yourdomain.com
To: customer@example.com
Cc: manager@example.com
Reply-To: support@yourdomain.com
Subject: Order Confirmation #12345

Your order is confirmed
EOF

curl --ssl-reqd \
  --url "smtps://smtp.mx.cloudflare.net:465" \
  --user "api_token:<API_TOKEN>" \
  --mail-from "orders@yourdomain.com" \
  --mail-rcpt "customer@example.com" \
  --mail-rcpt "manager@example.com" \
  --mail-rcpt "archive@example.com" \
  --upload-file mail.txt

Named recipients

Provide a display name alongside the address for the sender and recipients.

const response = await env.EMAIL.send({
	to: { email: "jane@example.com", name: "Jane Doe" },
	from: { email: "support@yourdomain.com", name: "Support Team" },
	subject: "Welcome!",
	html: "<h1>Thanks for joining!</h1>",
	text: "Thanks for joining!",
});
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": { "address": "jane@example.com", "name": "Jane Doe" },
    "from": { "address": "support@yourdomain.com", "name": "Support Team" },
    "subject": "Welcome!",
    "html": "<h1>Thanks for joining!</h1>",
    "text": "Thanks for joining!"
  }'

Use the Display Name <address> form in the From and To headers.

cat > mail.txt <<EOF
From: Support Team <support@yourdomain.com>
To: Jane Doe <jane@example.com>
Subject: Welcome!

Thanks for joining!
EOF

curl --ssl-reqd \
  --url "smtps://smtp.mx.cloudflare.net:465" \
  --user "api_token:<API_TOKEN>" \
  --mail-from "support@yourdomain.com" \
  --mail-rcpt "jane@example.com" \
  --upload-file mail.txt

Mixed plain and named recipients

Combine plain addresses and named addresses in the same to field.

const response = await env.EMAIL.send({
	to: ["plain@example.com", { email: "jane@example.com", name: "Jane Doe" }],
	from: "support@yourdomain.com",
	subject: "Team update",
	html: "<h1>Monthly update</h1>",
	text: "Monthly update",
});
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": [
      "plain@example.com",
      { "address": "jane@example.com", "name": "Jane Doe" }
    ],
    "from": "support@yourdomain.com",
    "subject": "Team update",
    "html": "<h1>Monthly update</h1>",
    "text": "Monthly update"
  }'
cat > mail.txt <<EOF
From: support@yourdomain.com
To: plain@example.com, Jane Doe <jane@example.com>
Subject: Team update

Monthly update
EOF

curl --ssl-reqd \
  --url "smtps://smtp.mx.cloudflare.net:465" \
  --user "api_token:<API_TOKEN>" \
  --mail-from "support@yourdomain.com" \
  --mail-rcpt "plain@example.com" \
  --mail-rcpt "jane@example.com" \
  --upload-file mail.txt

Next steps