Выбрать главу

Чтобы было более понятно, что из себя представляют заголовки, и где они находятся в письме, откройте почтовый клиент и посмотрите на любое письмо в том виде, как оно пришло (Для Outlook это можно сделать нажав правой клавишей мыши на сообщение-Свойства-Подробно-Исходное сообщение).

Как мы видим, письмо представляет простой текстовой файл, состоящий из двух общих разделов:Вверху идут заголовки письма, затем через две строки идет само письмо.

Заголовков письма достаточно много, но не все они используются при написании скрипта отправки почты.

Вот некоторые наиболее часто используемые:

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

Кодировку письма задает заголовок Content-type:

$header="From: "Evgen" <evgen@mail.ru>";

$header.="Content-type: text/plain; charset="windows-1251"";

$subject="Тема письма";

$msg="Сторака 1nСтрока 2nСтрока 3";

mail("name@mail.ru", $subject, $msg, $header);

В заголовке мы указали, что тип письма будет простой текст, а кодировка - Windows.

Теперь наше письмо придет в понятной для почтового клиента кодировке.

Но стоит отметить, что в некоторых случаях в правильной кодировке будет отображено только само письмо. Заголовок же так и останется нечитаемым. Связано это с тем, где расположен заголовок Content-type относительно заголовка Subject, который и содержит тему письма. Дело в том, что существуют почтовые программы, которые понимают заголовок Content-type, но не понимают русский текст в поле Subject, если это поле стоит до Content-type. В то же время, другие почтовые программы обязывают нас задавать Content-type последним заголовком в списке. Чтобы обойти эти препятствия, можно разместить поле Content-type сразу в начале и в конце списка заголовков:

$subject="Тема письма";

$header="Content-type: text/plain; charset="windows-1251"";

$header.="From: Evgen <evgen@mail.ru>";

$header.="Subject: $subject";

$header.="Content-type: text/plain; charset="windows-1251"";

$msg="Сторака 1nСтрока 2nСтрока 3";

mail("name@mail.ru", $subject, $msg, $header);

Теперь это письмо прочтет любая почтовая программа!

Для отправки письма в HTML-виде достаточно в заголовке Content-type указать тип документа не text/plain (простой текст), а text/html (html-текст).

А само письмо записать в html-виде:

$subject="Тема письма";

$header="Content-type: text/html; charset="windows-1251"";

$header.="From: Evgen <evgen@mail.ru>";

$header.="Subject: $subject";

$header.="Content-type: text/html; charset="windows-1251"";

$msg="<body>

<li>Сторака 1

<li>Сторака 2

<li>Сторака 3

</body>";

mail("name@mail.ru", $subject, $msg, $header);

Смотреть также

Из PHP в Exceclass="underline" работа с COM-объектами

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

Здесь рассматривается возможность работы с Excel-документами через COM-объект. К сожалению работа с COM-объектами в PHP возможна только на Windows-платформах. По-этому если Вы используете Unix-хостинг, то создавать и редактировать Excel-документы приведенным ниже способом не получится.

Работа с COM-объектами производится при помощи синтаксиса

$com_object = new COM($object);

где

Для создания Excel-документов переменной $object необходимо задать значение "Excel.Application" либо "Excel.sheet".

$xsl = new COM("Excel.Application");

После создания нового COM-объекта, можно обращаться к его свойствам и методам:

<?php

$xls = new COM("Excel.Application"); // Создаем новый COM-объект

$xls->Application->Visible = 1; // Заставляем его отобразиться

$xls->Workbooks->Add(); // Добавляем новый документ

$rangeValue = $xls->Range("A1");

$rangeValue->Value = "В выделенном блоке текст будет жирный, подчеркнутый, наклонный";

$rangeValue = $xls->Range("A2");

$rangeValue->Value = "Шрифт будет иметь высоту 12";

$rangeValue = $xls->Range("A3");

$rangeValue->Value = "Имя шрифта - Times New Roman";

$range=$xls->Range("A1:J10"); // Определяем область ячеек

$range->Select(); // Выделяем ее

$fontRange=$xls->Selection(); // Присваиваем переменной выделенную область

// Далее задаем параметры форматирования текста в выделенной области

$fontRange->Font->Bold = true; // Жирный