广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    构建简单的Webmail系统

    2018-09-29 11:23:10 次阅读 稿源:互联网
    零七广告
    这是一段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 style="text-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 style="text-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>"; 

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告