WEB-PROGRAMMING
Новое на сайте:
«    Март 2007    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
Навигация
Главное меню:
Главная
Карта сайта
Форум
Ссылки
Поиск по сайту
Разделы сайта:
Софт
Скрипты
Новости
Книги
Игры
Эротика 18+
Для разработчиков:
Программирование
Языки
Технологии
Базы данных
Шаблоны для сайтов
Разное
Аккаунт
Логин
Пароль
 

Архив
Январь 2009 (425)
Декабрь 2008 (2442)
Ноябрь 2008 (1852)
Октябрь 2008 (1118)
Сентябрь 2008 (767)
Август 2008 (546)
Июль 2008 (44)
Июнь 2008 (7)
Май 2008 (11)
Апрель 2008 (369)
Март 2008 (28)
Февраль 2008 (16)
Январь 2008 (2)
Декабрь 2007 (1)
Август 2007 (2)
Июнь 2007 (6)
Май 2007 (3)
Апрель 2007 (17)
Март 2007 (34)
Статистика
bigmir)net TOP 100
Rambler's Top100
Яндекс цитирования
 

Отправка писем на PHP

Категория: Программирование » Языки » PHP | Новость от: scorpion | 27 марта 2007

Рано или поздно каждый владелец сайта сталкивается с необходимостью отправки писем
непосредственно с сайта через скрипт, а не через почновые программы.
Это могут быть письма, отправляемые скриптом гостевой книги,
сообщающее владельцу сайта что у него в гостевой появилось новое сообщение,
или форумом, для опошещения о новом вопросе.
Во всех этих случаях необходима именно автоматическая отправка писем миную
разнообразные почтовые программы и утилиты.
Сделать это можно при помощи функции mail(), которую мы сейчас и будем изучать.

Синтаксис функции mail():
bool mail(string $to, string $subject, string $msg [, string $header]);

Функция mail() посылает письмо с темой $subject и содержанием $msg по адресу $to.
Если Вы хотите, чтобы письмо ушло по нескольким адресам, разделите их пробелами.
Само сообщение может быть многострочным. Для перехода на новую строку поставте
знак перехода на новую строку "n" в конце каждой строки.


mail("name@mail.ru", "my subject", "stroka1nstroka2nstroka3");

Или тотже самое можно записать так:
mail("name@mail.ru", "my subject", "stroka1
stroka2
stroka3");


В четвертом необязательном параметре $header можно указать заголовки нашего сообщения.
Под заголовками я подразумеваю информацию, передаваемую вместе с письмом почтовому клиенту,
которая будет содержать некоторые технические данные, такие как: кодировка письма, имя отправителя,
обратный адрес отправителя и т.д. Это схоже с использованием тега в html.

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

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

Заголовков письма достаточно много, но не все они используются при написании скрипта отправки почты.
Вот некоторые наиболее часто используемые:
from: "Имя пользователя отправителя"
to:
subject: Тема письма


Решение проблемы кодировок
Я не зря выше привел пример отправки письма со словами латинского алфавита.
Их любой почтовый клиент прочтет без труда. Но вот с русским алфавитом труднее.
Русских кодировок существует огромное множество. И от того, насколько умело
Вы перекодируете письмо, будет зависеть прочтет ли получатель его, или не будет возиться
с установкой нужной кодировки и просто удалит его в корзину.
Кодировку письма задает заголовок content-type:
$header="from: "evgen" ";
$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" ";
$header.="subject: $subject";
$header.="content-type: text/plain; charset="windows-1251"";
$msg="Сторака 1nСтрока 2nСтрока 3";
mail("name@mail.ru", $subject, $msg, $header);


Теперь это письмо прочтет любая почтовая программа!
Отправка письма в html-виде
Для отправки письма в html-виде достаточно в заголовке content-type указать тип документа не text/plain
(простой текст), а text/html (html-текст). А само письмо записать в html-виде:
$subject="Тема письма";
$header="content-type: text/html; charset="windows-1251"";
$header.="from: "evgen" ";
$header.="subject: $subject";
$header.="content-type: text/html; charset="windows-1251"";
$msg="
  • Строка 1
  • Строка 2
  • Строка 3
    ";
    mail("name@mail.ru", $subject, $msg, $header);


  • Источник: articles.org.ru
     (голосов: 0)
    Версия для печати | Комментариев: 1
    Написал: masteruz (21 мая 2008 11:42)
    <h1>normal</h1>
    [цитировать]
    Добавление комментария
    Поиск
    Технология Google

    Друзья сайта
    RIREG.NET
    Персональный проект
    Виктора Ткаченко
    WebPskov.Com
    FILMOROOM: Фантастические вселенные
    Интернет-версия газеты
    «Киевский вестник»
    Независимый информационный портал
    АНТИРЕЙДЕР
    Реклама
    Эротический видео-чат «Видео-девочка.ру»
    Спутниковое TV
    Немного про эксплуатацию спутникового ресивера Globo7010A

    На форуме
  • "Спорт"
    от Orype4uk
    05.01.2009 18:19
    Просмотров: 3821
    Ответов: 18

  • "Кто, где живет ?"
    от EVGENIJJ
    29.12.2008 16:50
    Просмотров: 2955
    Ответов: 19

  • "Сколько вам лет?"
    от EVGENIJJ
    29.12.2008 16:48
    Просмотров: 6816
    Ответов: 31

  • "Какой был ваш первый компьютер"
    от EVGENIJJ
    29.12.2008 16:45
    Просмотров: 1444
    Ответов: 10

  • "Какой у вас компьютер?"
    от EVGENIJJ
    29.12.2008 16:40
    Просмотров: 4527
    Ответов: 19

  • "Ваша любимая игра?"
    от EVGENIJJ
    29.12.2008 16:37
    Просмотров: 10753
    Ответов: 58

  • "РАЗДАЧА 7 ЗНАКОВ"
    от EVGENIJJ
    28.12.2008 19:33
    Просмотров: 223
    Ответов: 3

  • Copyright © 2007 by DataLife Engine