How do I set multiple recipients in a "mailto:" link?

Short Answer

There are no safe means of assigning multiple recipients to a single mailto: link via HTML. There are safe, non-HTML, ways of assigning multiple recipients from a mailto: link.

Long Answer

Abstract

Oftentimes, the question arises as to how a web author can assign multiple recipients to an EMail message via a mailto: link. This FAQ will discuss several common methods, some of which are not safe or are invalid. The FAQ also presents safe solutions.

The Mailto URL According to the Specs

Before we delve into the different "solutions" and why they are or are not valid, let's take a brief look at the specification for a mailto URL. RFC 1738, the Request For Comments that defines the proper structure of the various URLs (Uniform Resource Locators) found on the Internet, defines, in section 3.5, the MAILTO URL as follows:

A mailto URL takes the form:

mailto:<rfc822-addr-spec>

where <rfc822-addr-spec> is (the encoding of an) addr-spec, as specified in RFC 822 [6]. Within mailto URLs, there are no reserved characters.

RFC 822 defines the encoding of an addr-spec as follows:

addr-spec = local-part "@" domain

Without going into an in-depth discussion of how to translate this, note that domain is defined as being made up of one or more sub-domains, each separated by a period. This means that a valid addr-spec is of the form user@sub.dom.

The Comma Delimited "Solution" (Unsafe and Invalid)

Some posters note that listing the multiple recipients in a comma delimited list works. Suggestions differ on whether there should be a space after each comma, but the general form of this kludge is as follows (note the bold text):

<A HREF="mailto:user1@domain.dom, user2@domain.dom, ..., userN@domain.dom">Link Text</A>

This solution is unsafe because it causes several browsers to munge the EMail. More often than not, the browser will send the EMail, informing the user that the EMail was sent, but the EMail will be lost "in the ether" and will never be recieved.

Further, this "solution" violates RFC 1738 which states that the "rfc822-addr-spec" part of a mailto: link "is (the encoding of an) addr-spec" [emphasis added]. This "solution" also violates RFC822 which states that a valid addr-spec contains a single local-part, followed by "@," followed by a single domain. Neither local-part nor domain may contain a comma. Note that RFC 822 allows for group lists, but these are not part of the addr-spec definition and would therefore violate RFC 1738.

The Extra Attribute "Solution" (Invalid and Unsupported)

Some posters have suggested listing the multiple recipients via an extra attribute of the <A> tag. Suggestions differ on whether this mythical attribute is "CC," "TO," or something else entirely, but the general format is as follows (note the bold text):

<A HREF="mailto:user1@domain.dom" TO="user2@domain.dom">Link Text</A>

While this idea is probably safe (most browsers ignore unknown markup such as the TO "attribute") it does not at all seem to be supported and violates every HTML standard.

The EMail Alias Solution

For those who can do this, setting up an EMail alias is likely the best solution to this question. An EMail alias is a single EMail address that "points" to one or more other EMail addresses. This ability is a privelege reserved for system administrators but perhaps you can convince your sysadmin to add an alias.

Note that this solution is completely safe and valid. Note also that the sender of the EMail will not know that the EMail address is really an alias for multiple recipients.

Forms and CGI

With the exception of the EMail alias solution mentioned above, the only safe and guaranteed method of specifying multiple recipients via HTML is through FORMs. This solution requires a CGI program on the server that then generates the EMail message and sends it to the appropriate recipients. This method is completely safe and is completely guaranteed but is more of a hassle to implement due to the requirement of a back-end CGI program to process the FORM data as desired.


[Section Index] [Home Page]