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

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

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

(nikitoz@real.xakep.ru)

Пишем почтовый клиент на PHP

Так уж сложилось, что большинство пользователей предпочитают работать с почтой через предоставляемый бесплатными сервисами веб-интерфейс - а что, действительно удобно. Не надо ничего настраивать, зашел на сайт, набрал логин с паролем - и все, вот тебе письма. Есть и еще один плюс - если проверяешь почту с разных компьютеров, то вся переписка хранится в одном месте, и не возникает проблем, когда надо прочитать письмо, оставшееся на какой-нибудь далекой рабочей машине, доступа к которой, само собой, нет.

А сегодня я хочу рассказать тебе, как работают эти веб-интерфейсы. Даже более того - как написать свой собственный веб-интерфейс для smtp/pop3/imap-сервера. На PHP, конечно же :).

Зачем это надо?

Резонно. В ряде случаев и не надо :). Я, например, всегда предпочитал пользоваться нормальным почтовым клиентом - тут очень много плюсов, с которыми ты, уверен, знаком. Но сам я пару раз в год сталкиваюсь с проблемой, когда надо забрать почту с сервера, к которому нет веб-интерфейса - а дело происходит в интернет-кафе где-нибудь в Российской глубинке, и настраивать почтовый клиент, лишний раз светя ценнейшие пароли на общедоступной тачке, совершенно не хочется...

Тут бы хорошую службу сослужил как раз самопальный веб-интерфейс, который обеспечит максимальную секьюрность мероприятия. Хотя, стоит заметить, можно придумать и сотню других применений подобных систем - больше половины из них будут незаконными (рассылка спама и т.д.), поэтому говорить о них я не буду. Но тема все равно интересная, познавательная и отлично покажет тебе, как все-таки на практике выглядит работа с сокетами.

Руки - это хорошо

Нет, ну можно, конечно, все писать руками. Собственно, сначала я и хотел так сделать, но потом подумал и решил, что в этом нет никакого смысла. Поясню. Работа с любым почтовым сервером (pop3, imap или smtp) сводится к формированию некоторого семантически верного запроса, посылки его серверу и обработки ответа. Значит, использование готовых классов и функций лишь избавляет нас от довольно занудного мероприятия по составлению запросов для сервера, предоставляя удобный интерфейс для работы с почтовыми серверами. Однако я все-таки ознакомлю тебя с синтаксисом упомянутых протоколов, а на CD ты уже найдешь описываемые классы, созданную мной универсальную web-систему для работы с почтовыми серверами, полное описание протоколов imap/pop3/smtp и еще кучу другой полезной информации и классов!

При создании программы я остановил свой выбор на готовых классах pop3, mime_mail и smtp_mail. Следует заметить, что современные версии PHP имеют ряд встроенных функций по работе с серверами IMAP, поэтому потребность в низкоуровневой работе с этим протоколом отпадает сама собой.

Как работать с классами?

Описываемые классы можно либо скачать с сайта www.phpclasses.org, либо найти на CD - все пакеты комплектуются подробным описанием (правда, на английском языке), поэтому разобраться, как ими пользоваться, можно довольно быстро. Вообще, раньше я был серьезным противником использования чужих наработок, но сейчас пришел к другому выводу. Дело в том, что классы PHP поставляются открытыми кодами: ты можешь посмотреть их, найти и исправить ошибки, в конце концов, переписать все это под себя. Но времени ты все равно сэкономишь кучу - и, кроме того, всегда лучше посмотреть чужое, но красивое решение какой-либо проблемы, чем самому изобретать велосипед. Верно ведь?

Содержание  Вперед на стр. 059-098-2
ttfb: 3.3690929412842 ms