当前位置: 首页 > 图文教程 > 网络编程 > PHP > 构建简单的Webmail系统

PHP
PHP 开发环境的选择、建立及使用(5)
PHP 开发环境的选择、建立及使用(6)
PHP 开发环境的选择、建立及使用(7)
PHP 开发环境的选择、建立及使用(8)
PHP 开发环境的选择、建立及使用(9)
Win2003下APACHE PHP5 MYSQL4 PHPMYADMIN 的简易安装配置
PHP新手上路(八) 文件上传
PHP新手上路(九) 投票系统
PHP新手上路(十) 简易banner动态更替
PHP新手上路(十一) 数据库链接
PHP新手上路(十二)使用PHP来操作Oracle数据库
PHP新手上路(十三)PHP资源
PHP新手上路(十四) 其他杂项
session全教程(一)
session全教程(二)
session全教程(三)
PHP编码规范
第十五节--Zend引擎的发展 -- Classes and Objects in PHP5 [15]
第十四节--命名空间 -- Classes and Objects in PHP5 [14]
第十二节--类的自动加载 -- Classes and Objects in PHP5 [12]

PHP 中的 构建简单的Webmail系统


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 223 ::
收藏到网摘: n/a

这是一段Web Mail的示范代码,功能不是很强,但是结构还比较完整,主要的功能如查看文件夹,查看信件,回复,写信都有。但是程序中没有考虑附件解读和发送的问题。 (原文在 这里)。仅推荐给希望了解Webmail编程的网友做个参考。更加完善的Webmail请大家到 这里查找。
请注意:程序中使用了http认证功能,此功能需配合apache服务器使用。


--------------------------------------------------------------------------------
将以下代码分别存为 index.php3, imapfuncs.phl
配置imapfuncs.phl文件中的$M_HOST = "localhost"; $M_MAILSERVER = "transit.fast.no";
然后浏览 index.php3 即可.
--------------------------------------------------------------------------------
index.php3
<?PHP
/* $Id: index.php3,v 1.3 1999/04/14 12:12:32 borud Exp $ */
/* load the IMAP library functions we\'ve written */
include("imapfuncs.phl");
m_login($m);
?>
<HTML>
<HEAD>
<TITLE><?PHP echo "$M_SYSNAME"; ?></TITLE>
</HEAD>
<BODY bgcolor=#AAAAAA text=#000000 link=#440000 vlink=#440000 alink=#FF00FF>
<H1 ALIGN=CENTER><?PHP echo "$M_SYSNAME"; ?></H1>
<HR SIZE=1 NOSHADE>
<P>
<?PHP
if ($cmd == "delete") {
m_delete($marked, $m);
m_list($m);
}
elseif ($cmd == "display") {
m_display($n, $m);
}
elseif ($cmd == "compose" || $cmd == "reply") {
m_compose($n, $m);
}
elseif ($cmd == "send") {
m_send($to, $subject, $body);
m_list($m);
}
else {
m_list($m);
}
?>
<P>
<HR SIZE=1 NOSHADE>
<?PHP echo "User: $PHP_AUTH_USER"; ?>
</BODY>
</HTML>



--------------------------------------------------------------------------------
imapfuncs.phl
<?PHP /* -*-C++-*- */
/* $Id: imapfuncs.phl,v 1.4 1999/04/14 12:12:32 borud Exp $ */
/* configurable parameters */

$M_HOST = "localhost";
$M_MAILSERVER = "transit.fast.no\";
$M_COLOR_ODD = "#CCCCCC";
$M_COLOR_EVEN = "#EEEEEE";
$M_COLOR_HEAD = "#AAAAFF";
$M_COLOR_BG = "#FFFFFF";

/* globals */
$M_PORT = 143;
$M_SERVICE = "imap";
$M_SYSNAME = "Simple PHP3 IMAP Interface 1.0";
$M_MBOX = "{$M_HOST:$M_PORT/$M_SERVICE}";
$M_REALM = "IMAP Interface";
$MBOX = false;
/* functions */
function m_login ($mailbox = '')
{
global $MBOX, $M_REALM;
global $PHP_AUTH_USER, $PHP_AUTH_PW;
if ($MBOX) {
return true;
}
if (! $PHP_AUTH_USER) {
m_reject($M_REALM);
}
$MBOX = @imap_open(m_mailbox_name($mailbox), $PHP_AUTH_USER, $PHP_AUTH_PW);
if (! $MBOX) {
m_reject($M_REALM);
}
return true;
}

function m_list($mailbox = '')
{
global $MBOX, $PHP_SELF;
global $M_COLOR_ODD, $M_COLOR_EVEN, $M_COLOR_HEAD, $M_COLOR_BG;
/* if not logged into server, do so */
if (! $MBOX) {
if (! m_login($mailbox)) {
return false;
}
}
$num = imap_num_msg($MBOX);
echo "<FORM ACTION=$PHP_SELF TYPE=POST>\n";
echo "<CENTER><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=1 WIDTH=90%>\n";
echo "<TR ALIGN=LEFT BGCOLOR=$M_COLOR_HEAD>";
echo "<TH> </TH><TH>From</TH><TH>Subject</TH><TH>Date</TH>";
echo "</TR>\n";
for ($i=1; $i < ($num+1); $i++) {
$head = imap_header($MBOX, $i, 50, 50, 0);
$from = $head->fetchfrom;
$subj = $head->fetchsubject;
$date = m_date_format($head->date);
$bgcolor = ($i%2 == 0)?$M_COLOR_ODD:$M_COLOR_EVEN;
echo "<TR BGCOLOR=\"$bgcolor\">\n";
echo " <TD><INPUT TYPE=CHECKBOX NAME=marked[] VALUE=$i></TD>\n";
echo " <TD>$from</TD>";
echo "<TD><A href=\"$PHP_SELF?m=$mailbox&n=$i&cmd=display\">$subj</A></TD>";
echo "<TD>$date</TD>\n";
echo "</TR>\n";
}
if ($num <= 0) {
echo "<TR><TD ALIGN=CENTER COLSPAN=4 BGCOLOR=$M_COLOR_BG><BR>";
echo "<FONT SIZE=+1 COLOR=#FF0000>No messages in mailbox</FONT>";
echo "<BR><BR></TD></TR>\n";
}
echo "<TR BGCOLOR=$M_COLOR_HEAD><TD COLSPAN=4>";
echo "<INPUT TYPE=submit NAME=cmd VALUE=delete>";
echo "<INPUT TYPE=submit NAME=cmd VALUE=compose>";
echo "<INPUT TYPE=submit NAME=cmd VALUE=refresh>";
echo "</TD></TR>\n";
echo "</TABLE></CENTER>\n";
echo "</FORM>\n";
return true;
}

function m_display($msgno, $mailbox = '')
{
global $MBOX, $M_COLOR_HEAD, $M_COLOR_BG;
global $PHP_SELF;
if (! $MBOX) {
if (! m_login($mailbox)) {
return false;
}
}
$struc = imap_fetchstructure($MBOX, $msgno);
if (! $struc) {
return false;
}
$head = imap_header($MBOX, $msgno, 50, 50, 0);
$from = $head->fromaddress;
$subj = $head->subject;
$date = $head->date;
$body = htmlentities(imap_body($MBOX, $msgno));
echo "<CENTER>\n";
echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=10 WIDTH=100%>\n";
echo "<TR BGCOLOR=$M_COLOR_HEAD><TH>Message #$msgno: $from / $subj</TH></TR>\n";
echo "<TR BGCOLOR=$M_COLOR_BG><TD><PRE>\n";
echo "From: $from\n";
echo "Subject: $subj\n";
echo "Date: $date\n";
echo "<HR SIZE=2 NOSHADE>\n";
echo "$body\n";
echo "</PRE></TD></TR>\n";
echo "<TR BGCOLOR=$M_COLOR_HEAD><TD>";
echo "<FORM ACTION=$PHP_SELF METHOD=POST>";
echo "<INPUT TYPE=HIDDEN NAME=m VALUE=$mailbox>\n";
echo "<INPUT TYPE=HIDDEN NAME=n VALUE=$msgno>\n";
echo "<INPUT TYPE=HIDDEN NAME=marked[] VALUE=$msgno>\n";
echo "<INPUT TYPE=SUBMIT NAME=cmd VALUE=back>";
echo "<INPUT TYPE=SUBMIT NAME=cmd VALUE=reply>";
echo " <INPUT TYPE=SUBMIT NAME=cmd VALUE=delete>";
echo "</TD></TR>\n";
echo "</TABLE>\n";
echo "</CENTER>\n";
return true;
}
function m_delete ($msgno, $mailbox='')
{
global $MBOX;
if (is_array($msgno)) {
while (list($dummy, $num) = each($msgno)) {
imap_delete($MBOX, $num);
}
imap_expunge($MBOX);
} else {
return false;
}
return true;
}
function m_compose ($msgno='', $mailbox='')
{
global $MBOX, $M_COLOR_HEAD, $M_COLOR_BG;
global $PHP_SELF, $PHP_AUTH_USER, $M_MAILSERVER;
if ($msgno != '') {
$head = imap_header($MBOX, $msgno, 150, 150, 0);
$to = $head->fromaddress;
$subject = "Re: " . $head->subject;
$body = "$to wrote:\n";
$body .= ereg_replace("\n","\n>", "\n" . imap_body($MBOX, $msgno));
} else {
$to = "";
$subject = "";
$body = "";
}
echo "<CENTER>\n";
echo "<FORM METHOD=POST ACTION=\"$PHP_SELF\">\n";
echo "<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0>\n";
echo "<TR bgcolor=$M_COLOR_HEAD><TD ALIGN=RIGHT>To:</TD>";
echo "<TD><INPUT TYPE=TEXT NAME=to value=\"$to\" SIZE=50></TD></TR>\n";
echo "<TR bgcolor=$M_COLOR_HEAD><TD ALIGN=RIGHT>Subject:</TD>";
echo "<TD><INPUT TYPE=TEXT NAME=subject value=\"$subject\" SIZE=50></TD></TR>\n";
echo "<TR bgcolor=$M_COLOR_BG><TD COLSPAN=2>";
echo "<TEXTAREA COLS=76 ROWS=10 NAME=body WRAP=hard>$body</TEXTAREA>";