Главная » Мастерская » Статьи » Документация по PHP

Функция mail

mail

(PHP 3, PHP 4 )

mail -- послать почту

Описание

bool mail ( string to, string subject, string message 
[, string additional_headers [, string additional_parameters]])

mail() автоматический отправляет указанное сообщение указанному получателю.

Несколько получателей могут быть указаны с помощью запятой, между каждым адресом. Email с вложениями и специальным типом содержимого может быть послан этой функцией. Это достинается через MIME-кодирование - для дополнительной информации смотри статью Zend или the PEAR Mime Classes.

Следующие RFC так же могут быть полезны: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048, и RFC 2049.

mail() возвращает TRUE, если письмо было успешно принято для доставки, и FALSE в другом случае.

Внимание

Работа функции в Windows во многом отличается от Unix. Во-первых, она не использует локальный исполнимый файл для создания сообщения, а оперирует напрямую с сокетами, это означает то, что MTA (Агент Доставки Почты) необходимо находиться на сервере в состоянии прослушивания порта (MTA может находиться либо на локальной, либо на удалённой машине). Во-вторых, дополнительные заголовки, вроде From:, Cc:, Bcc: и Date: не интерпретируются MTA, а разбираются PHP. PHP < 4.3 поддерживает только заголовок Cc: (и сделан чувствительным к регистру). PHP >= 4.3 поддерживает все упоминаемые заголовки, которые больше не чувствительны к регистру.

Пример 1. Отправка почты.

mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");

Если четвёртый параметер передан , он вставляется в конце заголовка. Это обычно используется для добавления даполнительных заголовков. Дополнительные заголовки отделяются от текста письма с помощью символа возврата каретки и новой строки.

Замечание: Вы должны использовать \r\n для отделения заголовков, хотя некоторые почтовые агенты Unix могут работать только с символом новой строки(\n).

Пример 2. Отправка почты с дополнительными заголовками.

mail("nobody@example.com", "the subject", $message,
     "From: webmaster@$SERVER_NAME\r\n"
    ."Reply-To: webmaster@$SERVER_NAME\r\n"
    ."X-Mailer: PHP/" . phpversion());

Параметер additional_parameters может быть использован для передачи дополнительных параметров программе, сконфигурированной для использования таким образом, что отправка почты производиться с использованием конфигурационного параметра sendmail_path. Например это может использоваться для установки envelope sender address при использовании sendmail. Вам может понадобиться добавить пользователя, от имени которого работает ваш веб-сервер, согласно вашей конфигурации sendmail, для того, что бы предотвратить добавления заголовка 'X-Warning' в письмо, когда вы устанавливаете envelope sender, используя этот метод.

Пример 3. Отправка почты с дополнительными заголовками и установка дополнительного параметра командной строки.

mail("nobody@example.com", "the subject", $message,
     "From: webmaster@$SERVER_NAME", "-fwebmaster@$SERVER_NAME");

Замечание: Этот пятый параметер был добавлен в PHP 4.0.5. Начиная с PHP 4.2.3 этот параметер запрещён в безопасном режиме и функция mail() будет выдавать предупреждающее сообщение, и возвращать FALSE, если вы попытаетесь использовать её.

Вы можете так же использовать простую технику построения строк, для создания сложных почтовых сообщений.

Пример 4. Отправка сложных сообщений.

/* recipients */
$to  = "Mary <mary@example.com>" . ", " ; // note the comma
$to .= "Kelly <kelly@example.com>";

/* subject */
$subject = "Birthday Reminders for August";

/* message */
$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>
';

/* To send HTML mail, you can set the Content-type header. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* additional headers */
$headers .= "From: Birthday Reminder <birthday@example.com>\r\n";

$headers .= "Cc: birthdayarchive@example.com\r\n";
$headers .= "Bcc: birthdaycheck@example.com\r\n";

/* and now mail it */
mail($to, $subject, $message, $headers);

Замечание: убедитесь, что у вас нет символов новой строки в поле to или subject, иначе письмо не может быть отправлено правильно.

Замечание: параметер to не может быть в форме "Something <someone@somewhere.com>". Почтовая команда разберёт его неправильно при взаимодействии с MTA.


Copyright ByWeb©
Hosted by uCoz