Система відправлення листів із атачами

Автор: Тотоєв Олександр ([email protected])

Автоматичне побудова форм різної складності та надсилання їх листом з аттачами довільної кількості

Всі стикалися з тривіальним завданням – створення форми для відправки по e-mail. Зазвичай немає ніяких проблемм. Але й робота ця не така цікава і захоплююча. Проста рутина. Виникає ідея створити програму, яка б автоматизувала цей процес. Спочатку визначимо завдання. Припустимо, що нам потрібно створити форми на сайті.

У формах може бути:

  • заголовок розділу форми
  • текстове поле (text)
  • текстовий блок (textarea)
  • поле пароля (password)
  • поле вибору із списку (select)
  • поле checkbox
  • поле радіо буттону (radio)
  • невидиме поле (hidden)
  • поле завантаження файлу (file)

Надсилати листи передбачається у текстовому вигляді з атачами. Листи у форматі html не користуються популярністю у народу. Повинна бути перевірка заповнення полів, обов'язкових до заповнення. Ось усі пункти завдання готові.

Вирішено зробити 3 файли:

  • файл із формою
  • файл відправлення форми
  • файл ініціалізації форми

Забігаючи вперед, можу припустити, захоче покласти файли програми (перші два) в окремий каталог, наприклад forms, і просто інклюдити файл з формою на потрібних сторінках сайту, передаючи йому параметром шлях до файлу ініціалізації даної форми. Так як форми можуть відрізнятися одна від одної в оформленні, я не буду городити величезний файл з безліччю варіантів і наведу повністю робочий приклад, що працює на сайті «Сьомого континенту» в розділі «постачальники», а також на сайті gipragor.ru в розділі « задати питання".

Додам, що у нашихвипадках у формах були варіації виду полів text, textarea (у формі «Сьомого континенту» 3 види поля text). У вашому випадку, можливо, знадобиться ще кілька варіантів для полів. Все робиться аналогічно до того, що буде розглянуто нижче.

Почнемо з опису файлу ініціалізації форми.

Нижче наведено текст файлу ini.php

Як бачимо, кожне поле форми описується окремим рядком. Як я не намагався зробити універсальним оформлення всіх полів форм, не вийшло. Внаслідок цього пропоную таке оформлення: Першим скрізь йде назва поля, яке виводиться на екран. Другим тип поля форми:

Третій вказівник обов'язкового заповнення поля. Якщо стоїть одне поле обов'язково. Якщо параметр порожній або будь-який, що відрізняється від 1, поле не обов'язкове. Четвертим вказуємо додатковий параметр, якщо він необхідний. Кожен вид поля має додаткові параметри:

  • text long вказує на те, що поле-рядок буде довгим і розміщено під назвою; звичайне поле, без параметра, розміщується праворуч від назви
  • те ж саме, що й у text
  • checkbox checked вказує на те, що чекбокс буде обрано
  • radio четвертим параметром вказується ім'я групи радіо-буттонів, а п'ятим checked, як і у checkbox
  • file вказуємо ім'я покажчика масиву файлів, що завантажуються
  • hidden вказуємо параметр, відповідно до якого значення цього поля буде підставлено певне значення, або параметр буде переданий як є

Ну ось покінчили з ініціалізацією форми.

Тепер спробуємо написати програму, яка виводить форму користувачеві.

Створюємо файл index.php з наведеним нижче вмістом.

Ну ось наша форма виводиться на екран користувача, і вінстаранно, прикусивши мову, заповнює її поля.

Нижче наведено текст файлу відправки листа з аттачі send.php, який ми кладемо в папку з index.php.

Все вищенаписане призначене для програмістів-початківців на php, і для польоту думки вже досвідчених.

Повторювати програму можна у варіанті моєму, своєму, друга.