• 技术文章 >php教程 >php手册

    构建简单的Webmail系统_php基础

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




    --------------------------------------------------------------------------------
    将以下代码分别存为 index.php3, imapfuncs.phl
    配置imapfuncs.phl文件中的$M_HOST = "localhost"; $M_MAILSERVER = "transit.fast.no";
    然后浏览 index.php3 即可.
    --------------------------------------------------------------------------------
    index.php3

    /* $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);

    ?>


    <?PHP echo "$M_SYSNAME"; ?>







    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);
    }
    ?>















    --------------------------------------------------------------------------------
    imapfuncs.phl


    /* $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 "
    \n";
    echo "
    \n";

    echo "";
    echo "";
    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 " ";
    echo "";
    echo "\n";
    echo "\n";
    }

    if ($num <= 0) {
    echo "\n";
    }

    echo "\n";

    echo "
    FromSubjectDate
    $from$subj$date

    ";
    echo "No messages in mailbox";
    echo "

    ";
    echo "";
    echo "";
    echo "";
    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 "\n";
    echo "\n";
    echo "\n";
    echo "
    Message #$msgno: $from / $subj
    \n"; 
    echo "From: $from\n";
    echo "Subject: $subj\n";
    echo "Date: $date\n";
    echo "
    \n";
    echo "$body\n";
    echo "
    ";

    echo "
    ";
    echo "\n";
    echo "\n";
    echo "\n";
    echo "";
    echo "";
    echo " ";

    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 "";
    echo "\n";

    echo "";
    echo "\n";

    echo "
    To:
    Subject:
    ";
    echo "";
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    Web大前端开发直播班

      相关课程推荐

    • 独孤九贱(3)_JavaScript视频教程

      javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。没有它,你的前端生涯是不完整的。《php.cn独孤九贱(3)-JavaScript视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了javascript知识。

      JavaScript教程123796次播放


    • 独孤九贱(6)_jQuery视频教程

      jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等,是全球最流行的前端开发框架之一。PHP中文网根据最新版本,独家录制jQuery最新视频教程,回馈PHP中文网的新老用户。

      jQuery教程102295次播放


    • jQuery与Ajax基础与实战

      jQuery是最流行的JS函数库,封装了许多实用的功能,其中最引人入胜的就是Ajax。 jQuery中的Ajax操作,语法简单,操作方便,使Ajax从未如此轻松,前端人员从此不再为与服务器异步交互而发愁,本套课程,精选了最常用的几个方法,从基本的语法到每个参数,再到具体实例进行了全面的讲解。

      AJAX教程3747次播放


    • Git教程(60分钟全程无废话版)

      Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持

      JavaScript教程3105次播放


    1/1