Каждая строка должна быть отделена сиволом LF (\n).
Строки не должны быть длиннее 70 символов.
Предостережение
(Только для Windows) Если PHP передаёт данные напрямую SMTP-серверу и
в начале строки стоит точка, то она будет удалена. Чтобы избежать этого замените
все такие точки на две.
Строка, которая будет дополнительно вставлена в конец отправляемых заголовков письма.
Обычно используется для добавления дополнительных заголовков (From, Cc, and Bcc).
Несколько дополнительных заголовков должны быть разделены CRLF (\r\n).
Замечание:
При отправке письмо должно содержать
заголовок From. Он может быть установлен с помощью
параметра additional_headers, или значение
по умолчанию может быть установлено в php.ini.
Если заголовок отсутствует, будет сгенерировано сообщение об ошибке
вида Warning: mail(): "sendmail_from" not
set in php.ini or custom "From:" header missing.
Заголовок From также определяет заголовок
Return-Path в Windows.
Замечание:
Если сообщения не отправляются, попробуйте использовать только LF (\n).
Некоторые некачественные агенты пересылки сообщений Unix заменяют LF на CRLF
автоматически (что приводит к двойному CR, если использовалось CRLF).
Используйте эту меру в крайнем случае, так как это нарушает
» RFC 2822.
additional_parameters (необязательный)
Параметр additional_parameters может быть
использован для передачи дополнительных флагов в виде аргументов
командной строки для программы сконфигурированной для отправки писем,
указанной директивой sendmail_path. Например, можно
установить отправителя письма при использовании sendmail с помощью опции
-f.
Пользователь, под которым работает веб-сервер должен быть добавлен в список
доверенных в конфигурации sendmail для того чтобы избежать добавления заголовка
'X-Warning' при указании отправителя с помощью опции (-f).
Для пользователей sendmail - это файл /etc/mail/trusted-users.
Возвращаемые значения
Возвращает TRUE, если письмо было принято для передачи, иначе FALSE.
Важно заметить, что то что письмо было принято для передачи вовсе НЕ означает
что оно достигло получателя.
Список изменений
Версия
Описание
4.3.0 (только для Windows)
Теперь поддерживаются все дополнительные заголовки (такие как From, Cc, Bcc и Date), и
являются регистро-независимыми.
(Так как дополнительные заголовки интерпретируются не почтовым агентом,
а PHP, PHP < 4.3 поддерживал только заголовок Cc
и был регистро-зависимый).
4.2.3
Параметр additional_parameters отключен в
режиме safe_mode и при
его использовании функция mail() вызовет
предупреждение и вернет FALSE.
4.0.5
Был добавлен параметр additional_parameters.
Примеры
Пример #1 Отправка письма.
Использование функции mail() для отправки простого письма:
<?php // Сообщение $message = "Line 1\nLine 2\nLine 3";
// На случай если какая-то строка письма длиннее 70 символов мы используем wordwrap() $message = wordwrap($message, 70);
Пример #3 Отправка письма с дополнительными аргументами командной строки.
Параметр additional_parameters может быть использован
для передачи дополнительных параметров программе, используемой для отправки
писем с помощью директивы sendmail_path.
<?php mail('nobody@example.com', 'the subject', 'the message', null, '-fwebmaster@example.com'); ?>
Пример #4 Отправка HTML-сообщения
С помощью функции mail() также можно отправить и HTML-письмо.
<?php // несколько получателей $to = 'aidan@example.com' . ', '; // обратите внимание на запятую $to .= 'wez@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> ';
// Для отправки HTML-письма должен быть установлен заголовок Content-type $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
Для отправки HTML или других комплексных сообщений рекомендуется использовать
PEAR-пакет » PEAR::Mail_Mime.
Примечания
Замечание:
Реализация функции mail() в Windows во многом отличается от
реализации в Unix. Во-первых, она не использует локальную программу для
составления писем, а работает непосредственно с сокетами, что означает что
необходим почтовый агент (MTA), ожидающий
соединенй на сокете (может быть как на локальном так и на
удаленном сервере).
Во-вторых, дополнительные заголовки вроде:
From:,
Cc:,
Bcc: и
Date:
интерпретируются в первую очередь не,
MTA, а PHP.
Поэтому параметр to не должен быть адресом вида
"Something <someone@example.com>". Команда
mail может неправильно интерпретировать этот адрес во время передачи
данных MTA.
Замечание:
Не следует использовать функцию mail() для отправки
большого количества писем в цикле. Функция открывает и закрывает
соединение с SMTP-сервером для каждого письма, что не очень эффективно.