请注意:程序中使用了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: $fromn"
echo "Subject: $subjn"
echo "Date: $daten"
echo "<HR SIZE=2 NOSHADE>n"
echo "$bodyn"
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>";;
标签: