Loading
Красноглазым Джедаям
компьютерной вселенной
посвящается.

Отправка почты

Отправка почты из скрипта средствами PHP это довольно интересная задача. Конечно нельзя обойтись без встроенной функции mail, но это не все!

Если у вас проявились излишки свободы, государство предоставит вам место их лишения.

Как отправить письмо на email средствами PHP

Для того чтобы понять, каким путем надо идти в процессе решения этой задачи, нужно знать, что встроенная функция mail обращается к SMTP серверу того хостинга, на котором находится сайт. Отсюда приходит осознание небходимости иметь представление о спецификации SMTP. Функция mail возвращает true если письмо принято к передаче. Это не значит, что письмо дошло до адресата! Необходимо правильно сформировать все составные части передаваемого сообщения чтобы повысить вероятность успеха. Заголовок и тема сообщения у нас будет передан в русском шрифте. Чтобы соответствовать стандарту SMTP заголовка необходимо преобразовать наш заголовок следующим образом: "=?UTF-8?B?".base64_encode($header)."?= <" . $email . ">"; В примере, приведенном ниже заголовок письма в русском шрифте находится в переменной $headers. В переменной $from_email соответственно будет находиться почтовый ящик отправителя. Он будет в английском ширфте и в перекодировке не нуждается. Тема сообщения ($subject) кодируется аналогично. Ну и в переменной $to_user будет находиться почтовый ящик получателя, а в переменной $message - текст сообщения, он в перекодировке не нуждается.

/* * Функция формирующая и отправляющая сообщения по email из скрипта php в кодировке utf-8 */ function mail_utf8($to_user, $from_user = '(No name)', $from_email = '(No email)', $subject = '(No subject)', $message = '(No message)') { //Имя пользователя русским шрифтом, почтовый ящик - английским $from = "=?UTF-8?B?".base64_encode($from_user)."?= <" . $from_email . ">"; //тема русским щрифтом $subject = "=?UTF-8?B?".base64_encode($subject)."?="; //формируем правильный заголовок в соответствии со стандартом $headers = "Reply-To: $from \r\n". "MIME-Version: 1.0" . "\r\n" . "Content-type: text/plane; charset=UTF-8" . "\r\n"; //отправляем сообщение и возвращаем результат для проверки принято ли сообщение к передаче. return mail($to_user, $subject, $message, $headers); }

Теперь в скрипте PHP можно организовать как отправку письма из формы с данными введенными пользователем, так и уведомление администратора сайта о событиях, происходящих на сайте, например попытке взлома админки. Для этого нужно просто разместить на нужной странице сайта форму, вписать в ее скрытые и обычные поля необходимую информацию и вызвать на ней, например при помощи javascript или просто нажатием кнопки, событие SUBMIT, то есть передать управление php скрипту - обработчику формы. Ну и в заключение пример вызова функции отправки почты. Переменные с именами $value обозначают имена полей формы. В форме элементы должны иметь имена как: "<input name="value1" type="text">". Принимаем в скрипте обработки формы так: $value1 = $POST['value1'];. Допустим в поле формы с именем name="value1" вписано имя 'Вася Пупкин', тогда в скрипте обработки формы оно будет принято в переменную $value1.

/* * отправляем сообщение и обрабатываем результат */ $to_user = 'oleynikww@gmail.com'; //тут адрес получателя $value1 = 'Вася Пупкин'; //принятое из поля формы имя пользователя $value2 = 'pupkin@mail.ru';//принято из поля формы $value3 = 'Заголовок сообщения';//принято из поля формы $value4 = 'Это текст сообщения от Васи Пупкина';//принято из поля формы if(mail_utf8($to_user, $value1, $value2, $value3, $value4)) echo "Сообщение успешно отправлено!";


Контактная информация

E-Mail: oleynikww@gmail.com

Добавить комментарий

Комментарии пользователей