Электронная почта

ЛИСТИНГ 5 Файл mail.php3 (создание письма) <html><body bgcolor="#408080" text="#FFFFFF" link="#0000FF"vlink="#800080" alink="#FF0000"><BASE TARGET="main"><?PHPif (isset($mail) && ($mail>=1)): $imap_stream=imap_open("{127.0.0.1:143}Inbox","$PHP_AUTH_USER","$PHP_AUTH_PW",OP_READONLY); $header=imap_header($imap_stream,$mail,300,300,0);endif;?><FORM ACTION='send.php3' METHOD='POST'><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%> <TR> <TD class=light WIDTH="150"> <B><b>Your name :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="sendername" VALUE="<?PHPecho $sendername;?>" SIZE=60 maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B><b>From :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="sender" VALUE="<?PHP echo$PHP_AUTH_USER."@host.some_domain.com";?>" SIZE=60maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B><b>Subject :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="subject" VALUE="<?PHP if(isset($mail) && ($mail>=1)):?>Re: <?PHP echoeregi_replace("\"",""",$header->Subject); endif;?>" SIZE=60maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B><b>To :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="mailto" VALUE="<?PHP if(isset($mail) && ($mail>=1)): echo eregi_replace ("\"",""",$header->fromaddress); endif;?>" SIZE=60maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B>Message body : </TD><TD COLSPAN=2 class=light> <textarea name="text" rows=15 cols=59><?PHP if(isset($mail) && ($mail>=1)): echo "> ".eregi_replace("\n","\n> ",htmlspecialchars(imap_fetchbody($imap_stream,$mail,1,0))); endif;?></textarea><center><input type=submit value="Send"></center><br></TD></TR></TABLE></form></body></html><?PHP if (isset($mail) && ($mail>=1)):imap_close($imap_stream);endif; ?>

ЛИСТИНГ 6 Файл del.php (удаление письма) <html><body bgcolor="#408080" text="#FFFFFF" link="#0000FF"vlink="#800080" alink="#FF0000"><BASE TARGET="main"><?PHPif (isset($mail) && ($mail>=1)): $imap_stream=imap_open("{127.0.0.1:143}Inbox","$PHP_AUTH_USER","$PHP_AUTH_PW",OP_READONLY); $header=imap_header($imap_stream,$mail,300,300,0);endif;?><FORM ACTION='send.php3' METHOD='POST'><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%> <TR> <TD class=light WIDTH="150"> <B><b>Your name :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="sendername" VALUE="<?PHPecho $sendername;?>" SIZE=60 maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B><b>From :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="sender" VALUE="<?PHP echo$PHP_AUTH_USER."@host.some_domain.com";?>" SIZE=60 maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B><b>Subject :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="subject" VALUE="<?PHP if(isset($mail) && ($mail>=1)):?>Re: <?PHP echo eregi_replace("\"",""",$header->Subject); endif;?>" SIZE=60 maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B><b>To :</b></B> </TD><TD COLSPAN=2 class=light> <INPUT TYPE="text" NAME="mailto" VALUE="<?PHP if(isset($mail) && ($mail>=1)): echo eregi_replace("\"",""",$header->fromaddress); endif;?>" SIZE=60 maxlength=70> </TD></TR> <TR> <TD class=light WIDTH="150"> <B>Message body : </TD><TD COLSPAN=2 class=light> <textarea name="text" rows=15 cols=59><?PHP if(isset($mail) && ($mail>=1)): echo "> ".eregi_replace("\n","\n> ",htmlspecialchars(imap_fetchbody($imap_stream,$mail,1,0))); endif;?></textarea><center><input type=submit value="Send"></center><br></TD></TR></TABLE></form></body></html><?PHP if (isset($mail) && ($mail>=1)):imap_close($imap_stream);endif; ?>

ЛИСТИНГ 7 Файл send.php3 (отправка письма) <?PHP Header("Refresh: 5;url=main.php3");?><html><body bgcolor="#408080" text="#FFFFFF" link="#0000FF"vlink="#800080" alink="#FF0000"><BASE TARGET="main"><?PHP mail($mailto,$subject,$text,"From: $sendername <$sender>\nContent-Type: text/plain; charset=KOI8-R");?>Message was succesfully sent.</body></html>

1 Сценарий намеренно предельно упрощен: он не заботится о блокировке файлов, не обрабатывает ошибки записи на диск и т. п. Заметим, что наш счетчик, в отличие от большинства других, написан без использования тега <IMG>. Это позволяет сократить трафик и решает проблему неграфических браузеров (например, браузеров для слепых), но может создать проблемы, если нам нужен единый счетчик для нескольких "зеркал" основного узла. "Традиционная" реализация счетчика в PHP также не представляет проблемы, поскольку он имеет множество функций для порождения GIF-файлов (включая даже получение красивых надписей, выполненных шрифтами TrueType).

2 Число 401 взято не с потолка, а из описания протокола HTTP.

3 К сожалению, если в каком-либо другом подкаталоге указать realm="Web mail", то находящиеся в нем сценарии также получат соответствующую информацию. Поэтому данный метод неприемлем, если вы не можете контролировать содержимое всего узла.

В конце статьи мы обсудим, как обойти это ограничение.


Страница: