Php отправка почты html. Отправка email посредством PHP

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

Сегодня решился на написание скрипта, отвечающего за отправку e-mail сообщений с сайта. Оказывается, что в PHP – это делается очень просто.

Как отправляются письма через PHP ?

Для начала хотелось бы пояснить, что PHP не способен отсылать письма самостоятельно. В PHP есть функция, которая работает с почтовыми серверами.

Большинство современных платных хостингов, даже самых дешевых, имеют в своем наборе такой сервер. Чаще всего это sendmail . Вам только остается отослать запрос на отправку и sendmail это сделает.

Еще бы хостинги делали бы бесплатно продвижение сайтов , было бы вообще красота.

PHP -код отправки email`ов

За отправку e-mail в PHP отвечает всего одна функция mail(); , которая имеет синтаксис:

Mail (куда слать, тема сообщений, сообщение, доп. информация);

Лучшим объяснением считается пример, поэтому чтобы избежать лишней воды и сразу объяснить все как есть, пример:

$email = "[email protected]"; $subject = "Тема письма"; $message = "Поздравляем, Вы только что получили письмо.\n Это письмо отправлено средствами PHP"; $headers = "From: adminwa.ru \r\n Content-type: text/plain; charset=utf-8\r\n"; mail ($email, $subject, $message, $headers);

А теперь немного комментариев к приведенному куску кода.

В $email нужно указать адрес получателя вашего сообщения, если их несколько, то через запятую. Только учтите, что каждый, кто получил ваше письмо увидит всех получателей.

$subject должен быть не более 255 символов. Это не ограничение PHP , а стандарт электронных писем.

Переносы строки в $subject и $message осуществляются специальным символом(выражением) – \n

В $headers можно описать дополнительные параметры From – от кого мейл, Content-type – формат письма (можно указать text/plain – обычный текст или text/html – html-разметка), charset – кодировка письма и несколько других.

Все строки в $headers должны быть отделены \r\n.

Вот в принципе и все хитрости. Есть еще конечно несколько дополнительных параметров, как дополнительный email-адрес и другие, но они не всем нужны, а если и понадобятся, то можно легко найти эту информацию в Интернете.

Обычно я пишу вступление о том, почему данная тема так важна для изучения. Но не в этот раз, потому что здесь, уверен, ни у одного человека не возникнет вопрос: "Зачем отправлять e-mail в PHP ?". Поэтому предлагаю сразу приступить к делу и узнать об этом более подробно, тем более, что проще реализации отправки e-mail через PHP и придумать нельзя, так что поймут даже те, кто не знаком с PHP вообще.

Для начала давайте с Вами разберёмся немного с теорией. Скучно, но поверьте важно. Для отправки e-mail необходим SMTP-сервер . На большинстве платных хостингах он обязательно имеется. Однако, если такой возможности нет (допустим, хостинг бесплатный или очень дешёвый), то тогда можно воспользоваться сторонним SMTP-сервером (например, mail.ru ). То есть главное: для отправки необходим SMTP-сервер .

Во-вторых, чтобы принимать e-mail необходим POP-сервер . К чему я всё это говорю. А к тому, что очень часто люди спрашивают на форумах: "Почему у меня не работает отправка e-mail в PHP? ". А при этом люди пытаются отправить письма с сервера, на котором вообще нет SMTP . Очень важно: PHP e-mail не отправляет ! Отправляет e-mail приложение sendmail , которое имеется на операционных системах Unix , на которых и стоят большинство серверов. А PHP просто передаёт команды этому приложению. Надеюсь, объяснил понятно. Поэтому первое, что необходимо сделать - это раздобыть приложение sendmail . Но порадую тех, кто пользуется пакетом Denwer , так как у них это приложение уже встроено. Правда, с одной особенностью. Реальной отправки писем не происходит - они все складываются в директорию "tmp/!sendmail ". Но если письмо, которое Вы отправили в PHP , там оказалось, то можете быть уверены, что на 99% на реальном хостинге всё будет работать. Хотя, если Вам очень хочется по-настоящему отправлять e-mail , то Вы можете скачать sendmail , настроить его на какой-нибудь SMTP-сервер , например, mail.ru , затем изменить путь к sendmail в php.ini (настройки PHP ) и дальше уже радоваться жизни.

А теперь переходим к PHP . Для отправки e-mail используется всего одна функция - mail() . Принимает эта функция четыре параметра, три из которых являются обязательными:

Как видите, всё интуитивно понятно: кому отправлять, какая тема и само сообщение. Если Вы используете пакет Denwer , то после запуска скрипта, Вы сможете найти файл в директории "tmp/!sendmail ", в котором и содержатся данные Вашего письма. Открыть эти файлы можно либо в блокноте, но лучше открыть их в какой-нибудь почтовой программе (например, The Bat или Microsoft Outlook ).

Я не даром написал вперемешку русский и английский текст, чтобы проверить кодировку. Очень часто она распознаётся неправильно, и в результате, пользователи видят "абракадабру ". Чтобы этого избежать необходимо задать кодировку. И как раз для кодировки, а также для других особых параметров и существует четвёртый аргумент функции mail() :

Теперь давайте расшифрую то, что здесь написано. В переменной headers мы задали следующие параметры: в поле "От кого " будет стоять "[email protected] " (то есть сообщения можно отправлять далеко не от своего имени). Сообщение также является обычным текстовым (text/plain ) в кириллической кодировке (windows-1251 ), то есть в нашей с Вами родной кодировке, в которой имеется русский язык и английский. И, кстати, "\n " - это переход на новую строку (аналог
в HTML ).

Также сообщения можно отправлять в HTML-формате . Для этого достаточно всего лишь заменить "text/plain " на "text/html ". И Вы сможете в сообщении использовать HTML-теги . Только не забывайте, что всякие теги, наподобие: " ", " " и другие, - фильтруются любой уважающей себя почтовой системой. Однако, использовать теги оформления ("", " ", "
" и другие) Вы можете. И давайте, напоследок, отправим e-mail с использованием HTML-тегов :

Вот и всё. Как видите, тема очень простая, а отправлять e-mail в PHP очень важно уметь.

Содержит только текст (малый вес сообщения)

2. Отправка письма mail php Тип text/html Могут содержать графические html-элементы, сслыки и тп.
Больше объём передаваемой информации

3. Как использовать в письме CSS? Тут я хочу сразу немного огорчить Вас - CSS в привычном для Вас виде не стоит использовать. Mail, Yandex, Google, Outlook - выкидывают стили из писем. Однако, есть выход.

Выполним несколько условий:
1) Надеюсь не нужно пояснять, что используем Content-type: text/html

2) Вспоминаем, что такое table вёрстска. Теперь все стили вписываем только в неё. Можно также вспомнить center , font .




От кого: Иванов Иван Иванович
Адрес: [email protected]
Сообщение: Смотрим и радуемся

С div то же самое

Нужный Вам текст
3) В примере выше с отправкой письма приводилась данная строка. Так вот её не забываем

$headers = "MIME-Version: 1.0" . "\r\n";

4) Используем HTML 3.2 . Вставляем в начало html письма.


5) В качестве background - можно цвет. Хотите фон-изображение - тогда делайте весь текст и фон изображением. Как вариант: можно указать background-image для body.

6) У единственной в ячейке картинки в Gmail появляется 3px отступ снизу, чтобы избежать этого указываем ей

Одной из самых востребованных функций на сайте является форма заявки или заказа, данные из которой отправляются на почту владельцу сайта. Как правило такие формы являются простыми и состоят из двух трех полей для ввода данных. Как же создать такую форму заказа? Здесь потребуется использование языка разметки HTML и языка программирования PHP.

Язык разметки HTML сам по себе несложен, нужно всего лишь разобраться в том как и где ставить те или иные теги. С языком программирования PHP все немного сложнее.

Для программиста создать такую форму не составит труда, а вот HTML верстальщику может показаться сложным некоторые действия.

Создаем форму отправки данных в html

Первая строка будет следующей

Это очень важный элемент формы. В нем мы указываем каким способом будут передаваться данные и какому файлу. В данном случае все передачется методом POST файлу send.php. Программа в этом файле соответственно должна принять данные, они будут содержаться в post массиве, и отправить их на указанный email адрес.

Вернемся к форме. Вторая строка будет содержать поле для ввода ФИО. Имеет следующий код:

Тип формы text, то есть пользователь сможет ввести или скопировать сюда текст с клавиатуры. Под параметром name содержится название формы. В данном случае это fio, именно под таким именем будет передаваться все, что пользователь введен в данноу поле. Параметр placeholder указывает на то, что будет записано в этом поле в виде пояснения.

Следующая строка:

Здесь практически все то же самое, но имя для поля указано email, а пояснении указано, чтобы пользователь в эту форму ввел свой адресс электронной почты.

Следующей строкой будет кнопка "отправить":

И последней строкой в форме будет тэг

Теперь соберем все вместе.





Теперь сделаем так, чтобы поля в форме стали обязательными для заполнения. Имеем следующий код:





Создаем файл, принимающий данные из HTML формы

Это будет файл с именем send.php

В файле на первом этапе нужно принять данные из пост массива. Для этого создаем две переменные:

$fio = $_POST["fio"];
$email = $_POST["email"];

Перед названиями переменных в php ставиться знак $, в конце каждой строки ставиться точка с запятой. $_POST это массив в который передаются данный из формы. В форме html при этом указан метод отправки method="post". Так, приняты две переменные из формы html. Для целей защиты своего сайта нужно провести эти переменные через несколько фильтров - функций php.

Первая функция преобразует все символы, которые пользователь попытается добавить в форму:

При этом новые переменные в php не создаются, а используются уже имеющиеся. Что сделает фильтр, он преобразует символ "