PHP: Web-почта своими руками

Никита Кислицин

Xakep, номер #059, стр. 059-098-3


to varchar(50), from varchar(50),

subject varchar(50), size int,

date date, text text);

>create table IncomeServers(host varchar(50),

type varchar(5), login varchar(50),

passwd varchar(50));

>create table OutgoingServers(host varchar(50),

login varchar(50), passwd varchar(50));

После того как все таблицы созданы, настало время описать ряд функций по аутентификации пользователя, изменению настроек и т.д. Это обычная работа с сервером mysql, так что ты должен самостоятельно справиться с поставленной задачей.

Затем наступает черед описывать функции по работе с сообщениями: отправка через smtp-сервер, сохранение отправленного сообщения, получение сообщений с обслуживаемых серверов, сохранение их в БД и демонстрация результата пользователю. Во врезке с кодом ты найдешь все необходимое. Теперь твоя задача состоит в грамотной комбинации их некоторым образом, в зависимости от управляющего главным скриптом параметра, который для определенности назовем $do. Т.е., например, если передан параметр $do=sendmsg, то скрипт вызывает функцию посылки сообщения, а если $do=ShowMsg, то следует показать какое-то сообщение.

Собственно, все. Полный код системы лежит на CD, там же находится много полезных документов, полное описание протоколов imap4/pop3/smtp, несколько полезных классов и интересных статей по веб-программированию. Дерзай!

Врезка с кодом

<?

require("pop3.php"); # Подключаем класс

$pop3=new pop3_class; # Создаем новый экземпляр

$pop3->hostname="host.ru";

# Присваиваем свойству экземпляра значение

function ListMessages() { /* Список сообщений */

$result=$pop3->ListMessages("",0);

/* Вызываем соответствующий метод */

for(Reset($result),$message=0;$message<count($result);

Next($result),$message++)

echo "Сообщение ",Key($result)," ";

echo $result[Key($result)]," байт.<br>\n";

}

function ShowMessage($mid) { /* Выводим сообщение */

$pop3->RetrieveMessage($mid,&$headers,&$body,-1)

echo "Заголовки письма: $headers<br><br>

Тело письма: $body";

}

function DeleteMessage($mid) {

/* Удаляем сообщение $mid */

$pop3->Deletemessage($mid);

}

function Disconnect() {

/* Функция, закрывающая соединение с узлом */

$pop3->Close();

}

$conn=$pop3->Open();

if($conn=="") {

echo "Подключились к узлу $pop3_connection->hostname!<br>\n";

$ll=$pop3_connection->Login("user","password",0);

/* Логинимся на сервере */

if ($ll=="") { /* Если все ок */

echo "Пользователь $user опознан!<br>\n";

$pop3->Statistics(&$messages, &$size));

/* Получаем статистику по ящику */

echo "Общий объем - $size байт.<br>\n";

ListMessages();

}

}

?>

WWW

www.phpclasses.org

www.codenet.ru/webmast/smtp.php

www.codenet.ru/webmast/pop3.php

www.i2r.ru/static/240/out_3787.shtml

www.imap.org/imap.docs.html

www.imap.org/imap.vs.pop.html

www.acnet.ge/networking/applic_l/e_mail/internet/imap.htm

http://d.dp.ua/rfc.php?act=show&rfc=rfc-index

www.allinfo.ru/php4/manphp4rus/f/imap-open.htm

Хорошую службу сослужил бы самопальный веб-интерфейс, который обеспечит максимальную секьюрность мероприятия.

Назад на стр. 059-098-2  Содержание  Вперед на стр. 059-098-4