Виртуальная голубятня Константин Клягин Хакер, номер #072, стр. 072-120-5 Посылаем Для отсылки сообщения по указанному адресу в арсенале PHP имеется функция mail(), которой мы и воспользуемся следующим образом: mail($_POST[to], $_POST[subj], $_POST[text], .. Первые три параметра - значения полей формы в send.php, которая на этот раз отсылается посредством метода POST. Отсюда и использование массива $_POST. Адрес отправителя мы составляем из параметров ящика, которые достаем из текущей сессии. В случае неудачи при отправке в переменную $msg кладем текст сообщения об ошибке, который будет показан чуть ниже в странице. Если же все прошло гладко, юзеру здесь делать больше нечего - посылаем его обратно в список: header("Location: list.php"); Кроме показа формы с параметрами создаваемого сообщения и его отсылки, скрипт send.php умеет инициировать ответ на уже существующее сообщение. Занимается он этим в том случае, если получен параметр reply. Адрес отправителя оригинального сообщения подставляется в поле «Кому», а тема копируется с префиксом «Re:», чтобы было ясно, что пишется ответ. С текстом поступаем так. Сначала разбиваем его на строки: $lines = explode("\n", $body, 60); Максимальная длина строки 60, так что еще имеем и форматирование, как в аутлуке :). После чего в начало каждой строки вставляем «> »: for($i = 0; $i < count($lines); $i++) $lines[$i] = "> $lines[$i]<br> "; Склеиваем массив обратно и кладем результат в поле text формы: $_POST[text] = join("\n", $lines); Все поля из $_POST будут подставлены на свои места в странице методом вставки значения переменной прямо в текст страницы: .. value="<?= $_POST[to] ?> " .. Замечания Как и в любом другом языке программирования, в PHP код, который используется в нескольких местах, имеет смысл выгрузить в отдельный модуль. У нас этот модуль называется misc.php, и содержит он функцию mboxopen(), которая открывает почтовый ящик, руководствуясь параметрами из сессии. Результат ложится в глобально определенную там же переменную $mbox. В случае неудачи там же делается редирект на страницу логина. Это потребуется нам сразу в нескольких страницах, так же как и код, который идет сразу за определением mboxopen(). Он будет выполняться в начале каждого скрипта вместе с подключением файла при помощи директивы require. Код этот выставляет русскую кодировку koi8-r и стартует сессию. header("Content-Type: text/html; charset=koi8-r"); session_start(); При всем своем великолепии, имеются у poomail и недостатки. Например, отсутствие какой-либо поддержки аттачей. При отсылке к письму ничего нельзя прикрепить, а входящие сообщения с вложениями появляются в своем первозданном виде – как кодированные MIME. Здесь открываются возможности для бурной деятельности настоящего PHP-девелопера, главным другом которого становится мануал, где имеется описание без преувеличения всех доступных функций. Мануал обычно входит в комплект PHP, также его можно найти на http://www.php.net/. Если почитать главу про IMAP-функции, то с аттачами все окажется очень просто - для их вычитывания достаточно воспользоваться информацией, возвращаемой imap_fetchstructure(). После чего, анализируя тип частей, вызываем для каждой из них imap_fetchbody(). В отличие от голубей с их весьма фиксированными характеристиками, такими как размер, вес и размах крыльев, poomail можно менять и дорабатывать по своему усмотрению. CD Полный комплект poomail найдешь на диске. Туда же включен и HTMLArea. Достаточно просто распаковать архив в каталог веб-сервера и можно наслаждаться. Стартовый URL - http://имя.сервера/путь/poomail/login.php |