Отправка email php. Советы по PHP: Отправка писем при помощи PHP
Обычно я пишу вступление о том, почему данная тема так важна для изучения. Но не в этот раз, потому что здесь, уверен, ни у одного человека не возникнет вопрос: "Зачем отправлять 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 очень важно уметь.
Одной из самых востребованных функций на сайте является форма заявки или заказа, данные из которой отправляются на почту владельцу сайта. Как правило такие формы являются простыми и состоят из двух трех полей для ввода данных. Как же создать такую форму заказа? Здесь потребуется использование языка разметки HTML и языка программирования PHP.
Язык разметки HTML сам по себе несложен, нужно всего лишь разобраться в том как и где ставить те или иные теги. С языком программирования PHP все немного сложнее.
Для программиста создать такую форму не составит труда, а вот HTML верстальщику может показаться сложным некоторые действия.
Создаем форму отправки данных в htmlПервая строка будет следующей
Это очень важный элемент формы. В нем мы указываем каким способом будут передаваться данные и какому файлу. В данном случае все передачется методом POST файлу send.php. Программа в этом файле соответственно должна принять данные, они будут содержаться в post массиве, и отправить их на указанный email адрес.
Вернемся к форме. Вторая строка будет содержать поле для ввода ФИО. Имеет следующий код:
Тип формы text, то есть пользователь сможет ввести или скопировать сюда текст с клавиатуры. Под параметром name содержится название формы. В данном случае это fio, именно под таким именем будет передаваться все, что пользователь введен в данноу поле. Параметр placeholder указывает на то, что будет записано в этом поле в виде пояснения.
Следующая строка:
Здесь практически все то же самое, но имя для поля указано email, а пояснении указано, чтобы пользователь в эту форму ввел свой адресс электронной почты.
Следующей строкой будет кнопка "отправить":
И последней строкой в форме будет тэг
Теперь соберем все вместе.
Теперь сделаем так, чтобы поля в форме стали обязательными для заполнения. Имеем следующий код:
Это будет файл с именем send.php
В файле на первом этапе нужно принять данные из пост массива. Для этого создаем две переменные:
$fio = $_POST["fio"];
$email = $_POST["email"];
Перед названиями переменных в php ставиться знак $, в конце каждой строки ставиться точка с запятой. $_POST это массив в который передаются данный из формы. В форме html при этом указан метод отправки method="post". Так, приняты две переменные из формы html. Для целей защиты своего сайта нужно провести эти переменные через несколько фильтров - функций php.
Первая функция преобразует все символы, которые пользователь попытается добавить в форму:
При этом новые переменные в php не создаются, а используются уже имеющиеся. Что сделает фильтр, он преобразует символ "