Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 114) Курс PHP: Отправка писем


Школа программирования

114) Курс PHP: Отправка писем

Последний выпуск по PHP - был в выпуске N 111.

Универсальная функция PHP под названием mail() позволяет рассылать письма с программно подготовленным содержимым. Эта функция имеет три обязательных параметра и несколько необязательных.

Первые три параметра, которые должны присутствовать всегда:

адрес (e-mail) получателя; заголовок (subject) письма; текстовое содержимое письма.

Например, в простейшем случае отправка письма может выглядеть так:

  mail( 'vova@vovan.ru' , 'Срочно прочитать!' , ' Вова, перезвони! ' );

На адрес vova@vovan.ru после выполнения данной функции будет отправлено письмо с заголовком 'Срочно прочитать!' и текстовой строкой 'Вова, перезвони!'.

Важно! Далеко не все провайдеры хостинга позволяют рассылать письма с помощью PHP-скриптов. Связано это прежде всего в целях борьбы со спамом.

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

Функция mail() возвращает логическое значение - true, если отправка удалась успешно (что, впрочем, не гарантирует реальной отправки письма в случае сбоя почтового сервера), и false, если такая отправка невозможна.

  if (mail( 'vova@vovan.ru' , ' Срочно прочитать! ' , ' Вова, перезвони! ' ) ) {
      print "Письмо отправлено.";
  } else {
      print "Письмо не отправлено.";
  }

При желании содержимое письма (третий параметр) можно выполнить как html-данные, чтобы у получателя оно было показано в сверстанном виде (если его почтовый клиент поддерживает html-формат):

  $body= "
  <html><body>

  <h2>Володя!</h2>

  <b>Срочно</b> позвони!

  </body></html>
  ";

  mail( 'vova@vovan.ru' , ' Срочно прочитать! ' , $body);

Четвертый, необязательный параметр - это дополнительные заголовки письма (информация об отправителе, кодировке, версии почтовой программы, скрытых копиях и т. д.). Каждый заголовок отделяется от предыдущего комбинацией символов "\r\n", а в начале его ставится соответствующее служебное обозначение типа заголовка.

  $hd = "
  From: Dima <dima@dimon.ru> \r\n
  Date: Thu, 1 Jan 2000 12:56:57 +0100 \r\n
  Content-Type: text/html; charset=windows-1251 \r\n
  Content-Transfer-Encoding: 7bit \r\n
  ";

  mail( 'vova@vovan.ru' , ' Срочно прочитать! ' , $body, $hd);

Важно! Проверьте, чтобы содержимое письма, если используются русские буквы, совпадало по кодировке с набором, указанным в разделе "Content-Type".

Если требуется отправить письмо с вложением, надо:

а) в дополнительных заголовках указать, какой файл вкладывается в письмо. Например, если надо отправить файл-изображение dog.jpg, то в соответствующем разделе заголовка надо указать следующее:

  Content-Type: image/jpg; name= 'dog.jpg'

Файл будет отображен в теле письма, если клиентская почтовая программа умеет это делать.

Если же данные отправляются в другом формате (например, .doc, .zip), то нужно воспользоваться каким-либо другим стандартным обозначением вложения (они описаны в спецификации электронной почты RFC-822 и др, http://www.faqs.org/rfcs/).

б) указать версию кодировщика и способ кодирования (MIME/base64):

  MIME-Version: 1.0
  Content-Transfer-Encoding: base64

в) подготовить содержимое письма в кодировке base64. Для этого воспользоваться функцией base64_encode(), которая получает в качестве параметра строку с исходным содержимым, а возвращает ее закодированное представление:

  /*
  загружаем в переменную $s например двоичное содержимое файла
  dog.jpg,
  считывая его побайтно в символы строки $s.
  */

  $body= base64_encode($s);

  $hd="
  Content-Type: image/jpg; name= 'dog.jpg' \r\n
  MIME-Version: 1.0 \r\n
  Content-Transfer-Encoding: base64 \r\n
  ";

  mail( 'vova@vovan.ru' , ' См. вложение! ' , $body, $hd);

Существуют также общедоступные и удобные библиотеки создания писем с вложениями, например: http://pear.php.net/package/Mail/ .

Задание.
Поэкспериментируйте с отправкой писем средствами PHP, если ваш хостинг это позволяет.


В продаже моя книга "Delphi 2006: новые возможности"
Прямые ссылки на книгу в интернет-магазинах:
http://www.piter.com/book/978546901438/ (сайт издательства "Питер")
http://www.ozon.ru/context/detail/id/2672001/
http://labirint-shop.ru/index.html?ID_Book=106536
http://colibri.ru/binfo.asp?cod=197541&prt=679

В книге рассмотрены новые возможности системы программирования Delphi 2006 и представлены нововведения в языке, оболочке, редакторе, компиляторе и отладчике. Объяснены новые технологии работы с базами данных и создания приложений для Интернета. Особое внимание уделено средствам и технологиям повышения эффективности работы программистов: рефакторингу, шаблонам проектирования, унифицированному языку UML и технологии моделирования ECO.
Издание рассчитано на программистов всех уровней подготовки. Начинающие разработчики познакомятся с удобными средствами быстрого создания программ, программисты средней квалификации изучат современные подходы к разработке сложных систем и новые средства визуального проектирования, а профессионалам будут интересны новые возможности технологий моделирования ECO III, UML 2.0 и паттернов проектирования.


(c) 2004-2006 Сергей Бобровский bobrovsky at russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/

Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное