|
|
|
||||||||||||
|
|
Собственный, легко управляемый и профессионально разработанный сайт – необходимый элемент любого бизнеса. Находитесь ли Вы в командировке, в дороге, дома или на отдыхе имея компьютер, подключенный к сети Internet, Вы получаете доступ к управлению Вашим сайтом! |
|||
Почтовые функции в РНРСтатьи → Программирование на PHP и Perl
Одним из возможных применений imap функций является создание почтового демона, который будет управлять подпиской и отпиской пользователей от вашей почтовой рассылки. Для реализации этой задачи, обычно в рассылках используются два метода. Первый предполагает, что пользователь должен зайти на некую страницу и подтвердить свои действия, второй требует отправки письма. Второй так же требует, чтобы скрипт-обработчик регулярно запускался cron daemon?om. Из-за этого он не настолько популярен как первый способ. Но, как можно заметить, наиболее серьезные рассылки используют второй способ. Поэтому, если у вас есть возможность использования crond, воспользуйтесь им. Собственно, разобраться в функциях не так сложно. Человек, который раньше работал на РНР, без труда поймет, как с ними работать. Некоторые затруднения могут возникнуть с разбором заголовков писем, которые будет обрабатывать скрипт. Алгоритм работы самого скрипта придумать несложно. Демон устанавливает соединение с почтовым сервером, и проверяет наличие на нем писем. В случае если писем нет, работа скрипта прекращается. Не буду утомлять читателя блок-схемами, так что сразу перейдем к делу. Для открытия ящика используется функция imap_open. Поскольку РНР поддерживает работу с несколькими протоколами, то необходимо явно указать, какой протокол используется для работы с ящиком. В нашем случае это POP3 на 110 порту (стандарт). Присваиваем результат выполнения скрипта переменной $my_box = imap_open("{you.pop.host/pop3:110}", "login", В дальнейшем вы увидите, что эта переменная будет использоваться пратически во всех imap функциях. Далее проверяем ящик на наличие писем. Проверку выполняет функция $n = imap_num_msg($my_box); В результате переменная $n будет содержать количество писем в ящике. Число это может быть или больше нуля, или равно ему (если ящик пуст). Для разбора интересующих нас заголовков достаточно двух функций: imap_header и imap_fetch_overview. Для выполнения каждой из их, помимо ящика, нужно указывать номер письма. В нашем случае, внутри цикла он будет равен переменной Imap_header возвращает в результате выполнения объект, содержащий исчерпывающую информацию о заголовке письма. Среди всего прочего, этот объект содержит массив from, в котором содержаться четыре значения. Это personal, adl, mailbox и host. Нас из них интересуют только mailbox и host. Подставляя их, мы получим адрес, с которого было отправлено письмо. $h = imap_header($my_box, $m); imap_fetch_overview — позволит нам узнать тему письма. Для этих же целей можно было бы использовать и imap_header но по ряду причин это, иногда может не сработать. Из массива, который возвращает эта функция, нам нужно только поле subject $s = imap_fetch_overview($my_box, $m); Дальнейшие наши действия сводятся к тому, чтобы вытащить email из базы, и в случае наличия его там, пометить всю строку с этой записью как «проверенную», либо удалить. Предположим, что после заполнения формы рассылки на сайте, подписчику присваивается статус 0, а после подтверждения подписки он меняется на 1. if ($subj == "SUBSCRIBE") { как уже говорилось выше, после выполнения всех действий скрипт очищает ящик.
Данная простейшая программа, лишь демонстрация того, что на РНР можно писать не только динамически изменяющиеся сайты, но и сервисы, которые пользователю вообще не видны. Конечно, по части написания скриптов для shell, рнр неприменим, в отличие от своего конкурента Perl, но тем не менее… Листинг всей программы за исключением параметров соединения с базой <? Спасибо за подтверждение вашей подписки "; Вы были удалены из списка рассылки. "; Извините но этот почтовый ящик используется X-mailer: PHP4 Content-type: text/plain; charset=windows-1251 В листинг отсутствуют некоторые детали, например возможное конвертирование из win в koi, перепроверка почтового ящика отправителя и т.д. Это уже функциональные излишества, которые каждый может добавить по мере необходимости. Автор: Сергей Лисин 16.02.2006 |
VSESMI.ru — новости в СМИ.
Tur-Hotel.ru — отзывы об отелях
|
|
Copyright © 2002—2010 ООО "Хостмэйк" Телефон в Москве: +7 (495) 223-46-50 Телефон в Санкт-Петербурге: +7 (812) 448-38-90 Тел./Факс: +7 (8636) 237-836 E-mail: 2006 |