Отправка почтового сообщения методом PHP

Отправка почты средствами PHP осуществляется при помощи функции mail(), которая имеет следующий синтаксис:

mail($to, $subject, $body [, $headers] [, $parameters])

Эта функция принимает следующие аргументы:

  • $to — адрес электронной почты получателя;
  • $subject — тема сообщения;
  • $message — текст сообщения;
  • $headers — дополнительные заголовки;
  • $parameters — дополнительные параметры, которые можно задать в сообщении.

Если не указывается четвёртый параметр $headers, письмо не снабжается никакими дополнительными почтовыми заголовками. Однако очень часто требуется изменить формат письма с обычного текста (text/plain) на HTML-формат (text/html) или указать кодировку сообщения. Установка формата письма и его кодировки осуществляются при помощи почтовых заголовков Content-Type и charset соответственно.

Content-Type: text/html; charset=KOI8-R\r\n

Для отправки почтового сообщения в кодировке cp1251 вместо KOI8-R следует прописать windows-1251.

Таким образом, скрипт, выполняющий отправку почтового сообщения, может выглядеть так, как это представлено ниже:

<?php
  $theme = "Отчет с сайта";
  $theme = convert_cyr_string($theme, 'w', 'k');
  $message = "<html>
              <head></head>
              <body>
              Письмо отправлено - ".date("d.m.Y H:i:s")."<br>
              Размер скрипта отправителя - ".filesixe($_SERVER['PHP_SELF'])."
              </body>
              </html>";
  $message = convert_cyr_string($message, 'w', 'k');
  $headers = "Content-Type: text/html; charset=KOI8-R\r\n";
  if(mail($to, $subject, $message, $headers))
  {
    echo "Письмо успешно отправлено";
  }
  else
  {
    echo "Произошла ошибка - письмо не отправлено";
  }
?>

При получении письма в качестве отправителя будет представлен адрес сервера. Для того чтобы избежать этого, в качестве обратного адреса можно назначить произвольный адрес при помощи почтового заголовка From:

From: name <e-mail>

Вместо name указывается имя, которое будет отображаться клиентским почтовым агентом как имя отправителя, а e-meil содержит обратный почтовый адрес. Так, строки формирования переменной $headers могут выглядеть следующим образом:

<?php 
  $headers = "Content=Type: text/html; charset=KOI8-R\r\n";
  $headers .= "From: server <[email protected]>\r\n\r\n";
?>

При отправке электронного письма, снабженного письма, снабженного почтовыми заголовками, из предыдущего скрипта отправки сообщения оно будет представлено как письмо от пользователя server с электронным адресом [email protected].

Оставьте ответ