HTML guide · RFC 6068
Mailto links with multiple recipients
Separate To, CC, and BCC addresses with commas. Keep the URI compact, encode the message fields, and test the finished link because email-client behavior still varies.
Build the mailto linkCopy this
The correct multiple-recipient format
Put every primary recipient directly after mailto:, separated by commas. This follows the recipient-list syntax in RFC 6068.
<a href="mailto:alex@example.com,dev@example.com">Email the team</a>Use a comma, not a semicolon, and do not add spaces between addresses. The email app opens a draft addressed to both recipients. The visitor can still edit the list or close the draft without sending.
Address roles
Add CC and BCC once
Start query fields with ?, then join each extra field with &. Keep all CC addresses in one cc field and all hidden copies in one bcc field. Repeating a field can produce different results across clients.
<a href="mailto:alex@example.com,dev@example.com?cc=manager@example.com&bcc=archive@example.com&subject=Project%20update">Send the update</a>| Field | Use it for | Visibility |
|---|---|---|
| To | Primary recipients expected to act | Visible in the draft |
| CC | People who should be kept informed | Visible in the draft |
| BCC | A hidden copy after the visitor sends | Still exposed in your page source |
Two encoding layers
Encode the message, then escape the HTML
Percent-encode subject and body values. Spaces become %20, while body line breaks use %0D%0A. In HTML source, write separators between query fields as & so the markup stays valid.
<a href="mailto:alex@example.com,dev@example.com?subject=Project%20update&body=Hello%20team%2C%0D%0AHere%20is%20the%20latest.">Email the team</a>The mailto link generator handles both layers and gives you ready-to-paste HTML.
Standards are the baseline
Test the clients your visitors actually use
What the standard defines
Comma-separated recipients, one query string, and percent-encoded values.
What the standard cannot promise
That every browser-handler and email-client combination interprets every field the same way.
Run the finished URL through the mailto link tester, then open it in the browser and email clients that matter to your audience. A valid URI can still hand off to the wrong app or to no configured handler.
Keep the list small
A mailto link is not private routing
Every To, CC, and BCC address in a mailto link is visible in the page source. Do not place a private address or a large distribution list in public HTML. Use a contact form or server-side mail flow when you must hide recipients, validate a submission, choose a recipient dynamically, or confirm delivery.
smart-mailto preserves the same recipient fields
The library parses comma-separated To, CC, and BCC addresses and carries them into the chosen provider's composer. It improves provider choice, but it does not make a public recipient list private.
Add the webmail picker →FAQ
Multiple-recipient mailto questions
How do I add multiple recipients to a mailto link?
Put the recipient addresses after mailto: and separate them with commas. Do not put spaces between addresses. Add subject, cc, bcc, or body after a question mark.
Should mailto recipients use commas or semicolons?
RFC 6068 defines a comma-separated recipient list. Some email clients apply their own address-list rules, so use commas in the URI and test the finished link in the clients that matter to your audience.
Can a mailto link include multiple CC or BCC addresses?
Yes. Put one cc or bcc parameter in the query string and separate its addresses with commas. Avoid repeating the same parameter because mail clients handle repeated fields inconsistently.
Is mailto suitable for a large recipient list?
No. Every address is exposed in the page source, and the visitor still has to send the message from their own email client. Use a contact form or server-side mail flow when recipients must stay private or routing must be reliable.