Description
bool
mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])
mail() automatically mails the message
specified in message to the receiver
specified in to. Multiple recipients can
be specified by putting a comma between each address in
to. Email with attachments and special
types of content can be sent using this function. This is
accomplished via MIME-encoding - for more information, see this
Zend article or the
PEAR Mime Classes.
The following RFC's may also be useful:
RFC 1896,
RFC 2045,
RFC 2046,
RFC 2047,
RFC 2048, and
RFC 2049.
mail() returns TRUE if the mail was successfully
accepted for delivery, FALSE otherwise.
| Warning |
The Windows implementation of mail() differs in many
ways from the Unix implementation. First, it doesn't use a local binary
for composing messages but only operates on direct sockets which means a
MTA is needed listening on a network socket (which
can either on the localhost or a remote machine). Second, the custom
headers like From:, Cc:,
Bcc: and Date: are not interpreted by the MTA
in the first place, but are parsed by PHP.
PHP < 4.3 only supported the Cc:
header element (and was case-sensitive). PHP >= 4.3
supports all the mentioned header elements and is no longer
case-sensitive.
|
Example 1. Sending mail. |
<?php
mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");
?>
|
|
If a fourth string argument is passed, this string is inserted at
the end of the header. This is typically used to add extra
headers. Multiple extra headers are separated with a carriage return
and newline.
Note:
You must use \r\n to separate headers, although
some Unix mail transfer agents may work with just a single newline
(\n).
Example 2. Sending mail with extra headers. |
<?php
mail("nobody@example.com", "the subject", $message,
"From: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"X-Mailer: PHP/" . phpversion());
?>
|
|
The additional_parameters parameter
can be used to pass an additional parameter to the program configured
to use when sending mail using the sendmail_path
configuration setting. For example, this can be used to set the
envelope sender address when using sendmail with the
-f sendmail option. You may need to add
the user that your web server runs as to your sendmail configuration
to prevent a 'X-Warning' header from being added to the message when
you set the envelope sender using this method.
Example 3. Sending mail with extra headers and setting an additional command line parameter. |
<?php
mail("nobody@example.com", "the subject", $message,
"From: webmaster@{$_SERVER['SERVER_NAME']}", "-fwebmaster@{$_SERVER['SERVER_NAME']}");
?>
|
|
Note:
This fifth parameter was added in PHP 4.0.5. Since PHP 4.2.3 this
parameter is disabled in safe_mode
and the mail() function will expose a warning message
and return FALSE if you're trying to use it.
You can also use simple string building techniques to build complex
email messages.
Example 4. Sending complex email. |
<?php
$to = "mary@example.com" . ", " ; $to .= "kelly@example.com";
$subject = "Birthday Reminders for August";
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "To: Mary <mary@example.com>, Kelly <kelly@example.com>\r\n";
$headers .= "From: Birthday Reminder <birthday@example.com>\r\n";
$headers .= "Cc: birthdayarchive@example.com\r\n";
$headers .= "Bcc: birthdaycheck@example.com\r\n";
mail($to, $subject, $message, $headers);
?>
|
|
Note:
Make sure you do not have any newline characters in the
to or subject,
or the mail may not be sent properly.
Note:
The to parameter should not be an address
in the form of "Something <someone@example.com>". The
mail command may not parse this properly while talking with
the MTA (Particularly under Windows).
See also imap_mail().