Тема листа - можемо придумати самі. Проявіть фантазію.
Сам лист - в принципі ми можемо використовувати той же текст, який виводився в сценарії report.php. Тільки його потрібно відформатувати трохи, щоб отримати потрібний рядок. Адже, як ви пам'ятаєте, в сценарії ми виводили текст в окремих рядках за допомогою команди echo з використанням тега
для красивого виведення на html-сторінці.
Створимо нову змінну $ msg. яка буде містити текст листа:
Ми створили достатньо довгий рядок, з'єднавши окремі частини за допомогою оператора конкатенації (точки). Якщо вивести текст, що містить в новій змінної через команду echo $ msg; на тій сторінці з сценарієм, то отримаємо приблизно наступне:
Ми отримали текст листа, правда виглядає він поки не дуже охайним. Можна було додати прогалин між пропозиціями або розбити на окремі рядки, але в цілому результат нас влаштовує.
Так як лист - це звичайний текст, то тут не можна використовувати HTML-тег
. Для перекладу тексту на новий рядок використовується символ нового рядка у формі Escape-послідовності '\ n'.
Спробуємо переробити приклад:
Знову виводимо результат за допомогою echo $ msg; і дивимося:
Замість перенесення рядків ми бачимо \ n як звичайний текст, який затесався між нашими словами для письма. Фігня якась.
Проблема полягає в тому, що PHP по різному обробляє рядки, ув'язнені в одинарні або подвійні лапки. У нашому випадку, що перенесення рядків заробив, необхідно використовувати подвійні лапки. спробуємо:
Ми бачимо, що символи \ n зникли, але текст все одно виводиться в один рядок. Однак, якщо ви відкриєте вихідний код сторінки, то побачите, що насправді текст розбитий на окремі рядки. Але браузер ігнорує подібні переноси, тому ми не помічаємо ефекту переносу рядків. Якби ми виводили рядок в текстовий документ, то все б працювало, як ми хотіли. У листі переноси також працюватимуть.
Зверніть увагу на таку особливість. У прикладі з подвійними лапками ми вставляли імена змінних прямо в текст без обрамляє лапок. PHP самостійно підставляє значення змінних в текст. Це дуже зручно. Тут важливо розуміти різницю між одинарними і подвійними лапками в PHP-коді. Дане пояснення виходить за рамки досліджуваного уроку.
У нас є всі необхідні компоненти для відправки листа. Залишилося скомпонувати в одне ціле. Створимо окремі змінні для кожного елемента листи:
У PHP є вбудована функція для відправки листа mail (). Простий варіант функції виглядає наступним чином:
Якщо ви хочете також надіслати копію і приховану копію, то слід додати потрібні елементи ( "Cc:" або "Bcc:") в четвертому параметрі, відокремлюючи елементи комбінацією символів повернення каретки і нового рядка, наприклад так:
При відправці листа ви можете зіткнутися з двома проблемами. Перша - ваш сервер може не підтримувати функцію mail (). Вам слід звернутися до свого хостера з цим питанням або змінити хостера і вибрати хостинг з підтримкою відправки листів.
Ось робочий приклад, який зазвичай я використовую в своїх проектах. Для початку формую кодування для теми листа в такий спосіб:
А далі формуються дані для відправки листа. Приклад розрахований на кодування UTF-8:
Тепер ми вміємо створювати форму, отримувати дані від користувача і відправляти отриману інформацію собі на пошту.