Отправка Электронного Письма с Помощью Php

Мы проделали часть работы. Мы можем с помощью сценария получить данные, которые вводит пользователь в форме. Но пока они видны только самому пользователю. Нам нужно дополнить сценарий таким образом, чтобы данные отсылались нам на почту (или сохранялись в базе данных, чтобы их читать на сайте).
Любое письмо состоит из нескольких элементов: адрес электронной почты отправителя, адрес электронной почты получателя, тема письма, само письмо. Посмотрим, что у нас имеется.
Адрес электронной почты отправителя - в форме у нас есть поле , в котором пользователь должен ввести свой адрес.
Адрес электронной почты получателя - это ваш электронный адрес, уж его вы знаете.
Тема письма - можем придумать сами. Проявите фантазию.
Само письмо - в принципе мы можем использовать тот же текст, который выводился в сценарии report.php. Только его нужно отформатировать немного, чтобы получить нужную строку. Ведь, как вы помните, в сценарии мы выводили текст в отдельных строках при помощи команды echo с использованием тега
для красивого вывода на html-странице.
Вспоминаем код:
echo 'Спасибо за заполнение формы.
'; echo 'Кота похитили ' . $when . '
'; echo 'Похитители: ' . $description . '
'; echo 'Ваш email: ' . $email;
Создадим новую переменную $msg, которая будет содержать текст письма:
$msg = 'Спасибо за заполнение формы.'. 'Кота похитили ' . $when . 'Похитители: ' . $description . 'Ваш email: ' . $email;
Мы создали достаточно длинную строку, соединив отдельные части с помощью оператора конкатенации (точки). Если вывести текст, содержащий в новой переменной через команду echo $msg; на той странице с сценарием, то получим приблизительно следующее:
Мы получили текст письма, правда выглядит он пока не слишком опрятным. Можно было добавить пробелов между предложениями или разбить на отдельные строчки, но в целом результат нас устраивает.
Так как письмо - это обычный текст, то здесь нельзя использовать HTML-тег
. Для перевода текста на новую строку используется символ новой строки в форме Escape-последовательности '\n'.
Попробуем переделать пример:
$msg = 'Спасибо за заполнение формы.\n'. 'Кота похитили ' . $when . '\n'. 'Похитители: ' . $description . '\n'. 'Ваш email: ' . $email;
Снова выводим результат с помощью echo $msg; и смотрим:
Вместо переноса строк мы видим \n как обычный текст, который затесался между нашими словами для письма. Фигня какая-то.
Проблема заключается в том, что PHP по разному обрабатывает строки, заключённые в одинарные или двойные кавычки. В нашем случае, что перенос строк заработал, необходимо использовать двойные кавычки. Попробуем:
$msg = "Спасибо за заполнение формы.\n". "Кота похитили $when\n". "Похитители: $description\n". "Ваш email: $email"; echo $msg;
Source: developer.alexanderklimov.ru