一個簡單的Webmail系統 (轉)
一個簡單的
來源:sadly
這是一段Web Mail的示範程式碼,功能不是很強,但是結構還比較完整,主要的功能如檢視夾,檢視信件,回覆,寫信都有。但是中沒有考慮附件解讀和傳送的問題。 (原文在 這裡)。僅推薦給希望瞭解Webmail的網友做個參考。更加完善的Webmail請大家到 這裡查詢。
請注意:程式中使用了http功能,此功能需配合使用。
--------------------------------------------------------------------------------
將以下程式碼分別存為 index.3, 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 E$ */?PHP>
/* load the IMAP library functions we've written */
include("imapfuncs.phl");
m_login($m);
?>
if ($cmd == "delete") {
m_delete($marked, $m);
m_list($m);
}?PHP>
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
-*-C++-*- */
<p>/* $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 " echo " for ($i=1; $i < ($num+1); $i++) { $from = $head->fetchfrom; $bgcolor = ($i%2 == 0)?$M_COLOR_ODD:$M_COLOR_EVEN; echo " if ($num <= 0) { echo " echo "
echo "n";
"; n";
echo " From Subject Date ";
echo "
$head = imap_header($MBOX, $i, 50, 50, 0);
$subj = $head->fetchsubject;
$date = m_date_format($head->date);n"; n";
echo " n";
echo " $from ";
echo "$subj ";
echo "$date n";
echo "
}
echo " n";
";
echo "No messages in mailbox";
echo "
}
n";
";
echo "";
echo "";
echo "";
echo "
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 "
echo "
Message #$msgno: $from / $subj |
---|
n"; |
";
echo " |
echo "
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 "
echo "n";
echo "
}
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_MAILSERVERn";
$headers .= "Reply-to: $PHP_AUTH_USER@$M_MAILSERVERn";
$headers .= "Content-Type: text/plain; charset=iso-8859-1n";
$headers .= "Content-Traner-Encoding: 8bitn";
$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($)
{
Header("HTTP/1.0 401 Unauthorized");
Header("WWW-authenticate: basic realm="$dom"");
echo "Access deniedn";
exit;
}
/* make sure there is NO trailing space here!!! */
?>
--------------------------------------------------------------------------------
編輯整理:中國PHP自由聯盟
[關閉視窗] - 2000-03-28 -
Copyright ? 2000 Chinese PHP Power All rights reserved.
?PHP>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987482/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個簡簡單單的紅點系統框架框架
- 設計一個簡單的devops系統dev
- 一個簡單的完整人臉識別系統
- YII 初體驗 —— 搭建一個簡單的 Todo List 系統
- 用 PHP 開發一個簡單的以太坊支付系統PHP
- [轉]:如何快速構建一個簡單的程式
- 統一身份認證系統的簡單看法
- 使用 Fuse 和 java 17 編寫一個簡單的檔案系統Java
- [譯] 使用 Pandas 在 Python 中建立一個簡單的推薦系統Python
- 不到40行 Python 程式碼打造一個簡單的推薦系統Python
- 如何簡單的在TF卡上做一個Linux的檔案系統Linux
- 來來,一起設計一個簡單的活動釋出系統
- 配置一個簡單的傳統SSM專案SSM
- 用C++編寫一個簡單的員工工資管理系統~C++
- Springmvc 一個簡單的管理系統 我所遇到的坑1(持續更新)SpringMVC
- 如何使用Access資料庫建立一個簡單MIS管理系統資料庫
- ASP.NET 網頁- WebMail 幫助器簡介ASP.NET網頁WebAI
- 一個簡單的Tessellation Shader
- 一個簡單的「IOC」例子
- 一個簡單的 PWA 指南
- 鴻蒙系統應用開發之JS實現一個簡單的List鴻蒙JS
- 做一個音影片點播系統要多久?操作越簡單越好
- 基於 Laravel5.5 的簡單個人部落格系統Laravel
- 一款簡單好用的開源文件管理系統
- 簡單查重系統
- 實現一個簡易的響應式系統
- 使用go搭建一個簡易的部落格系統Go
- 一個最簡單的web componentsWeb
- 建立一個簡單的小程式
- 一個簡單的區塊鏈區塊鏈
- 寫一個簡單的 Facade 示例
- 一個簡單的BypassUAC編寫
- 分享一個簡單的redis限流Redis
- 實現一個簡單的TomcatTomcat
- 一個簡單的 Amqp 封裝MQ封裝
- 擼一個簡單的MVVM例子MVVM
- [譯]ViewModels:一個簡單的示例View
- 一個簡單的MVP模式案例MVP模式
- 一週開發一個客服工單系統