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

PHP
PHP新手总结的PHP基础知识
php实现gb2312和unicode间编码转换
用php语言实现数据库连接详细代码介绍
详细解析 PHP 向 MySQL 发送数据过程
利用PHP V5开发多任务应用程序
详细讲解PHP中缓存技术的应用
php escapeshellcmd多字节编码漏洞
《PHP设计模式介绍》导言
《PHP设计模式介绍》第一章 编程惯用法
《PHP设计模式介绍》第二章 值对象模式
《PHP设计模式介绍》第三章 工厂模式
《PHP设计模式介绍》第四章 单件模式
《PHP设计模式介绍》第五章 注册模式
《PHP设计模式介绍》第六章 伪对象模式
《PHP设计模式介绍》第七章 策略模式
《PHP设计模式介绍》第八章 迭代器模式
《PHP设计模式介绍》第九章 观测模式
《PHP设计模式介绍》第十章 规范模式
《PHP设计模式介绍》第十一章 代理模式
《PHP设计模式介绍》第十二章 装饰器模式

PHP 中的 构建简单的Webmail系统


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 228 ::
收藏到网摘: 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>";