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

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

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