Відправка електронної пошти

Відправка електронної пошти

  • створити і відправити просту форму зворотного зв'язку;
  • використовувати змінну $ PHP_SELF для створення форми зворотного зв'язку з призначеними для користувача повідомленнями про помилки.

    Додаткові настройки РНР для користувачів Windows

    ЯКЩО ви використовуєте РНР4 під управління операційної системи Windows, зверніть увагу на наступні рядки в вашому файлі php.ini:

    [Mail function]
    SMTP =; for Win32 only
    sendmail_from =; for Win32 only

    Вам необхідно змінити дві останні рядки для того, щоб функція mail () працювала правильно. Для цього виконайте такі дії:

    Створення простої форми зворотного зв'язку

    Створення форми зворотного зв'язку

  • Почніть створення форми, вказавши в якості методу post, а в якості дії - сценарій send_simpleform.php.
  • Створіть поле введення для імені користувача з підписом Ваше ім'я.
  • Створіть текстову область для введення повідомлення з підписом Повідомлення.
  • Для створення кнопки для пересилання форми введіть код:
  • Завершіть створення форми і HTML-документа, ввівши текст:

    і натисніть клавішу Enter.
    В робоче вікно браузера буде завантажена створена вами форма зворотного зв'язку (рис. 4.1).

    Мал. 4.1. Робоче вікно браузера з завантаженою формою зворотного зв'язку.

    Створення сценарію для обробки форми

    Тепер ви створите сценарій, який буде мати справу з трьома змінними: $ sender_name, $ sender_email і $ message.

    У зв'язку з тим, що параметр ACTION у створеній формі simple_form.html має значення send_simpleform.php. ви повинні дати це ж ім'я своїм сценарієм. Мета сценарію - отримати текст в змінних $ sender_name. $ Sender_email і $ message. сформувати і відправити поштове повідомлення, і відобразити підтвердження в Web-браузері.

  • Щоб додати до рядка повідомлення рядок з ім'ям відправника, введіть текст:

    Наступні кілька кроків будуть продовжувати формування рядка повідомлення, об'єднуючи маленькі рядки в одну довгу рядок повідомлення. Для об'єднання рядків використовується оператор (. =).

  • Щоб додати до рядка повідомлення текст повідомлення, введіть текст:

    Останній рядок містить два ознаки нового рядка (\ n \ n), щоб додати порожній рядок в кінці.

  • Щоб створити змінну, що містить тему повідомлення, введіть текст:
  • Щоб створити змінну, що містить додаткові заголовки, введіть текст:
  • Додайте до змінної $ mailheaders інформацію про відправника, введіть текст:
  • Щоб додати функцію відправки повідомлення, введіть текст:
  • Завершіть введення блоку PHP рядком:

    Набраний вами текст сценарію повинен виглядати так, як він показаний в лістингу наведеному на мал. 4.2.

    Мал. 4.2. Лістинг сценарію.

    Збережіть сценарій з ім'ям send_simpleform.php.

    Створення повідомлення для браузера

    Хоча створений сценарій РНР буде відправляти повідомлення електронної пошти, необхідно згенерувати повернути якусь повідомлення користувачу на екран, щоб він знав, що його повідомлення, яке він відправив з форми, було прийнято. Інакше він буде продовжувати натискати кнопку Послати форму. не підозрюючи, що повідомлення вже надіслано.

    Продовжимо введення тексту в створений в попередньому кроці файл.

  • Додайте інформацію для користувача про те, що було зроблено:
  • Додайте напис Ваше ім'я:
  • Для виведення на екран імені користувача з форми, введіть команду:
  • Для виведення на екран введеного повідомлення користувача, введіть команду:
  • Додайте наступні рядки, щоб завершити створення HTML-документа:

    Мал. 4.3. РНР-сценарій для формування і надсилання листів і створення повідомлення для браузера.

    Заповнення створеної форми і отримання результату

    Ви створили форму і пов'язаний з нею сценарій, тепер перевірте все це в роботі.

    і натисніть клавішу Enter. В робоче вікно браузера буде завантажена створена вами раніше форма зворотного зв'язку (мал. 4.1).

    Мал. 4.4. Підтвердження відправлення повідомлення.

  • Запустіть вашу поштову програму і перевірте свою поштову скриньку. Ви знайдете в ньому очікує вас повідомлення (рис. 4.5).

    Вирівнювання тeкcтa в поштовому повідомленні

    Як видно з рис.4.5, текст в рядках повідомлення не вирівняний, і це псує зовнішній вигляд листа. Щоб виправити це і зробити текст повідомлення більш акуратним, виконайте наступні дії:

  • Вставте в рядку містить текст Повідомлення: три знаки табуляції (\ t).

    Збережіть зроблені зміни. Фрагмент зміненої частини файлу send_simpleform.php приведений в лістингу на рис. 4.5.

    Мал. 4.5. Фрагмент зміненої частини файлу send_simpleform.php

    і натисніть клавішу Enter. в робоче вікно браузера буде завантажена створена вами раніше і вже знайома форма зворотного зв'язку (мал. 4.6).

    Мал. 4.6. Формa зворотного зв'язку.

  • З'єднання з Інтернетом.
  • Натисніть кнопку Послати форму. Вид вікна браузера зміниться, як показано на рис. 4.7.

    Мал. 4.7. Підтвердження відправлення повідомлення.

    Запустіть вашу поштову програму і перевірте свою поштову скриньку. Ви знайдете в ньому очікує вас повідомлення (рис. 4.8).

    Мал. 4.8. Лист з вирівняним текстом повідомлення.

    Тепер текст повідомлення став більш акуратним.

    Для того щоб поліпшити сценарій send_simpleform.php. перевіримо, чи мають будь-які значення змінних $ sender_name. $ Sender_email і $ message. перед тим як виконати відправку листа. Для цього виконайте такі дії:

  • Збережіть зроблені зміни.

    Далі ви створите сценарій, в якому будеnт генеруватися повідомлення про помилку, якщо поле введення в формі не заповнене. Крім цього, ви об'єднаєте двоступеневий процес відправки повідомлення в одному сценарії.

    Форма зворотнього зв'язку з повідомленнями про помилки.

    Отже, Ви створили два окремих файлу. Один з них містить форму, а інший - пов'язаний з нею сценарій. Тепер Ви дізнаєтеся як, використовуючи змінну $ PHP_SELF для обробки форми, створити один єдиний файл, який об'єднує в собі і форму і сценарій. Ви також дізнаєтеся, як створювати повідомлення про помилку, коли хоча б одне з полів введення форми не заповнено.

    Створення початкового сценарію

  • Почніть блок РНР.
  • Створіть змінну з ім'ям $ form_block. в якій буде зберігатися вся форма.
  • Почніть формування форми в змінній $ form_block. вказавши в якості методу post. а в якості дії - змінну $ PHP_SELF.

    Оскільки необхідно помістити довгий рядок в змінну, велика ймовірність того, що в рядку зустрінеться одна або кілька лапок. Не забувайте маскувати всі внутрішні знаки лапок за допомогою символу зворотної косої риски (\).

  • Створіть поле введення для імені користувача з написом Ваше ім'я:
  • Створіть текстову область для введення повідомлення з написом Повідомлення:
  • Для створення кнопки з написом Послати форму введіть код:
  • Щоб завершити форму і закінчити операцію присвоєння, введіть текст:
  • Завершіть PHP-блок і створення HTML-документа:
  • Збережіть створений файл з ім'ям allinone_form.php в папці для документів вашого Web-сервера.

    Мал. 4.9. Лістинг файлу allinone_form.php.

    Якщо ви спробуєте завантажити файл allinone_form.php в ваш Web-браузер, то нічого не побачите, крім заголовка вікна Форма повідомлення все-в-одному. У вас може виникнути питання: "Навіщо були потрібні всі введені HTML-рядки, присвоєні змінної $ form_block?" Далі Ви додасте до створеного сценарієм команди, які відображають деякі фрагменти коду в залежності від певних дій. Рядок в змінній $ form_block є одним з таких фрагментів.

    Додавання npoвepкu помилок в сценарій.

    Ми плануємо використовувати глобальну змінну $ PHP_SELF. яка має значення імені поточного сценарію. У нашому випадку змінна $ PHP_SELF матиме значення allinone_form.php. Коли ви використовуєте змінну $ PHP_SELF як дії (ACTION). ви як би говорите: "Коли буде натиснута кнопка пересилання форми, потрібно перезавантажити цей сценарій і зробити деякі дії" замість того, щоб сказати: "Коли буде натиснута кнопка пересилання форми, потрібно знайти інший сценарій і зробити деякі дії".

    Поки є тільки оболонка сценарію, тому слід подумати про те, які дії повинен виконувати цей сценарій:

  • Відобразити форму;
  • Переслати форму;
  • Перевірити помилки;
  • Вивести повідомлення про помилки без відправки повідомлення;
  • Надіслати форму, якщо не було виявлено помилок.

    Уточнивши завдання, що стоять перед сценарієм, можна продовжити його створення.

    Цей рядок задає приховану змінну з ім'ям $ ор. якої присвоюється значення ds. Позначення змінної op - скорочення від operator (оператор), а значення ds - do something (зробити щось). Такі імена обрані просто тому, що вони не зарезервовані для жодних дій в різних мовах програмування. Ви можете назвати їх так, як вам захочеться, аби ви розуміли їх призначення, про яке буде розказано далі.

    Змінна $ ор буде визначена тільки в тому випадку, якщо форма була передана для обробки, тобто була натиснута кнопка Послати форму. Таким чином, якщо значення змінної $ ор не визначене, тобто не дорівнює "ds". то це означає, що ще не бачив форму. А якщо користувач не бачив форму, то ми повинні її показати.

  • Перед ознакою завершення РНР-блоку (?>) Введіть оператор if. else:
  • Збережіть зміни у файлі.

    Фрагмент лістингу зміненої вами частини файлу allinone_form.php повинен виглядати як показано на рис. 4.10

    Мал. 4.10. Фрагмент лістингу зміненої частини файлу allinone_form.php

    У наступних нижче кроки ви справите додатково деякі зміни в створеному сценарії, щоб додати повідомлення про помилки при неправильному заповненні форми користувачем. Якщо форма була передана, то змінна $ ор матиме значення "ds". і ми виконаємо дії вже для цього умови. Ми припускаємо, що всі поля форми обов'язково повинні бути заповнені, тому після перевірки значення змінної $ ор потрібно перевірити, чи є значення у всіх полях.

  • Додайте в якості дії ще один оператор if. else. перевіряючий змінну $ sender_name:
  • Створіть у змінній $ name_err повідомлення про помилку при відсутності значення змінної $ sender_name:
  • Створіть змінну $ send і дамо їй значення "nо" (немає):
  • Введіть таку ж перевірку змінної $ sender_email:
  • Введіть перевірку змінної $ message:
  • Почніть оператор if. else, який перевірить змінну $ send:
  • Введіть код, що формує рядок поштового повідомлення.
  • Створіть змінну для зберігання теми поштового повідомлення:
  • Створіть змінну для зберігання заголовка поштового повідомлення:
  • Додайте до значення змінної $ mailheaders інформацію про відправника:
  • Додайте простий оператор, щоб повідомити користувача, що повідомлення було послано, і завершите блок оператора if:
  • Продовжіть оператор if. else і визначте дії в разі, коли змінна $ send прийме значення "nо":
  • Введіть команди для виведення на екран повідомлень про помилки:
  • Введіть команду, яка виведе на екран форму:
  • Закрийте поточний оператор if. else:
  • Закрийте зовнішній оператор if. else:
  • Збережіть файл зі змінами.

    Пересилання форми і отримання результатів

    Ви об'єднали форму і сценарій її обробки в одному файлі allinone_form.php. Пора перевірити їх працездатність.

    і натисніть клавішу Enter. В робоче вікно браузера буде завантажена створена вами форма (мал. 4.12).

    Мал. 4.12. Робоче вікно браузера з формою все-в-одному.

  • Натисніть кнопку Послати форму. нічого не вводячи ні в одне поле введення.

    У верхній частині форми будуть виведені три повідомлення про помилки (рис. 4.13).

    Мал. 4.13. Робоче вікно браузера з трьома повідомленнями про помилки.

  • Введіть тільки своє ім'я в поле введення Ваше ім'я :. Решта поля введення залиште порожніми. Натисніть кнопку Послати форму. В результаті буде виведено два повідомлення про помилки (рис. 4.14)

    Мал. 4.14. Робоче вікно браузера з двома повідомленнями про помилки.

    У верхній частині вікна браузера буде виведено одне повідомлення про одну помилку (рис. 4.15).

    Мал. 4.15. Робоче вікно браузера з одним повідомленням про помилку.

    У робочому вікні браузера з'явиться повідомлення про успішну відправку поштового повідомлення (рис. 4.16).

    Мал. 4.16. Повідомлення про успішну відправку повідомлення.

  • Перевірте свою поштову скриньку в Інтернеті, в ньому ви побачите очікує вас повідомлення.
  • Отримайте поштове повідомлення, використовуючи свою поштову програму, і відкрийте його. Вид отриманого повідомлення буде схожий на той, який показаний на рис. 4.17.

    Мал. 4.17. Лист, відправлений за допомогою сценарію allinone_form.php.

    Збереження значень в полях форми при oшібкax

    При роботі сценарію allinone_form.php ви могли помітити, що якщо була допущена помилка, то значення, введені в поля форми, не зберігаються. Це дуже просто виправити у фрагменті коду, що задає змінну $ form_block. Треба просто додати параметр VALUE в рядки, що задають поля введення, щоб зберігати в цьому параметрі попереднє значення даного поля.

  • Замініть рядок, що визначає текстову область Повідомлення: всередині змінної $ form_block. наступним рядком:

    Пpu визначенні текстової області TEXTAREA не потрібно параметр VALUE. Досить вставити значення між початковим і кінцевим тегом, що визначає область.

    В робоче вікно браузера буде завантажена форма з модернізованого вами файлу allinone_form.php (рис. 4.18).

    Мал. 4.18. Робоче вікно браузера з формою все-в-одному.

  • Введіть своє ім'я в полі введення Ваше ім'я :. Решта поля введення залиште порожніми. Натисніть кнопку Послати форму. нічого не вводячи в інші поля введення. У верхній частині форми буде виведено два повідомлення про помилку (рис. 4.19).

    Мал. 4.19. Форма з повідомленнями про помилки і з збереженими даними в поле введення Ваше ім'я.

    Ви бачите, що на цей раз значення в поле введення Ваше ім'я: збереглося!

  • Введіть в поле введення Повідомлення: текст:
    Сценарій все-в-одному - це дуже здорово!
  • З'єднання з Інтернетом.
  • Натисніть кнопку Послати форму. У робочому вікні браузера з'явиться повідомлення про успішну відправку поштового повідомлення (рис. 4.16)
  • Перевірте свою поштову скриньку в Інтернеті, в ньому ви побачите очікує вас повідомлення.
  • Отримайте пoчтовое повідомлення, використовуючи свою поштову програму, і відкрийте його. Вид отриманого повідомлення буде схожий на той, який показаний на рис. 4.17.

    Схожі статті