这是一段Web Mail的示范代码,功能不是很强,但是结构还比较完整,主要的功能如查看文件夹,查看信件,回复,写信都有。但是程序中没有考虑附件解读和发送的问题。 (原文在 这里)。仅推荐给希望了解Webmail编程的网友做个参考。更加完善的Webmail请大家到 这里查找。 请注意:程序中使用了http认证功能,此功能需配合apache服务器使用。
-------------------------------------------------------------------------------- 将以下代码分别存为 index.php3, imapfuncs.phl 配置imapfuncs.phl文件中的$M_HOST = "localhost"; $M_MAILSERVER = "transit.fast.no"; 然后浏览 index.php3 即可. -------------------------------------------------------------------------------- index.php3
-------------------------------------------------------------------------------- imapfuncs.phl
\n"; echo " \n";
echo " "; echo " FromSubjectDate"; echo "\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 " \n"; echo " \n"; echo " $from"; echo " $subj"; echo " $date\n"; echo "\n"; }
if ($num <= 0) { echo " "; echo "No messages in mailbox"; echo "
\n"; }
echo " "; echo ""; echo ""; echo ""; echo "\n";
echo "\n"; echo "\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 " \n"; echo " \n"; echo " Message #$msgno: $from / $subj\n"; echo " \n"; echo "From: $from\n"; echo "Subject: $subj\n"; echo "Date: $date\n"; echo "\n"; echo "$body\n"; echo "\n"; echo " ";
echo " "; echo "\n"; echo "\n"; echo "\n"; echo ""; echo ""; echo " ";
echo "\n"; echo "\n"; echo "\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 " \n"; echo "\n"; echo " \n"; echo " To:"; echo " \n";
echo " Subject:"; echo " \n";
echo " "; echo "$body\n"; echo "\n";
echo " "; echo ""; echo ""; echo ""; echo "";
echo "\n"; echo "\n"; }
function m_send ($to, $subject, $body) { global $PHP_AUTH_USER, $M_MAILSERVER, $M_SYSNAME;
if ($PHP_AUTH_USER && $M_MAILSERVER && $to && $body) {
$headers = "From: $PHP_AUTH_USER@$M_MAILSERVER\n"; $headers .= "Reply-to: $PHP_AUTH_USER@$M_MAILSERVER\n"; $headers .= "Content-Type: text/plain; charset=iso-8859-1\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; $headers .= "X-Mailer: $M_SYSNAME/" . phpversion() . "\n";
return mail($to, $subject, $body, $headers); }
return false; }
function m_date_format($datestr) {
if (ereg("([[:digit:]]{1,2})[[:space:]]+([[:alpha:]]{3})[[:space:]]+([[:digit:]]{4})", $datestr, $regs)) { return $regs[0]; }
return $datestr; }
function m_mailbox_name ($mbx) { global $M_MBOX;
/* no mailbox specified means we map it to the inbox */ if ($mbx == "") { return $M_MBOX . "INBOX"; }
/* replace some special chars */ $mbx = ereg_replace("[^[:alnum:]]", "_", $mbx);
return $M_MBOX . $mbx; }
function m_reject($dom) { Header("HTTP/1.0 401 Unauthorized"); Header("WWW-authenticate: basic realm=\"$dom\""); echo "Access denied\n"; exit; }
/* make sure there is NO trailing space here!!! */ ?>
一个简单的Webmail系统 |