require("/home/httpd/phplib/qmail.inc");
$qmail_date = "v1";
$qmail_email = new register_email ;
$sql = "select pw_name from ".$qmail_date;
$qmail_email->query($sql);
while ($qmail_email->next_record())
{
$qmail_user = $qmail_email->f("pw_name");
$passwd = "12345";
$str_command = "sudo /var/vpopmail/bin/vadduser " .$qmail_user.;
$str_command = $str_command."@mail.com".$passwd." -q 10000000 < /home/n";
@exec($str_command,$str,&$result);
if ($result != 0 )
{
echo "command string is :".$str_command." , command is failed!!!
";
$error_info = "在執(zhí)行vadduser命令時(shí)失敗";
$address = "From: computer@mail.com\nReply-To: computer@mail.com\n" ;
mail("webmaster@mail.com", $error_info , $message,$address );
}
}
$qmail_email->free();
其它功能如修改口令、修改郵箱容量、刪除郵箱等,在程序?qū)崿F(xiàn)上非常類似,不做過(guò)多闡述。
E-mail中附件的上傳及
PHP本身提供上載功能,但根據(jù)實(shí)際情況,可以相應(yīng)做一些配置和錯(cuò)誤處理。用戶可以通過(guò)修改php.ini文件來(lái)擴(kuò)大上載文件的最大容量。同時(shí),可以通過(guò)在網(wǎng)頁(yè)的Form中增加的方法,將單個(gè)附件的大小限制在5MB以內(nèi)。如果網(wǎng)絡(luò)速度比較慢,則需要設(shè)置網(wǎng)頁(yè)的timeout變量,否則上載時(shí)會(huì)因?yàn)闀r(shí)間太長(zhǎng)而超時(shí)。在服務(wù)器端的處理程序部分代碼如下:
if (!file_exists($mail_att)) //判斷文件是否上載成功
{ //錯(cuò)誤處理及顯示
break ;
}
copy ($mail_att, $mail_att.".att") ; //將附件重新改名并拷貝到指定位置。
for ($i = 1; $i <= $num_attach; $i++)
{
$file_name = "send_att".$i; //得到上傳文件的原始名稱
$file_tmp = "send_att_tmp".$i; //得到上傳文件在服務(wù)器中的臨時(shí)文件名稱
$file_size = "send_att_size".$i; //得到上傳文件的大小
$file_mime = "send_att_mime".$i; //得到上傳文件的類型
}
在提供附件時(shí),這里沒(méi)有采用常用做法,即給用戶提供文件的URL。因?yàn)檫@種做法理論上并不安全,用戶有可能通過(guò)鏈接直接到該文件。相反,從瀏覽器無(wú)法訪問(wèn)到的目錄下讀出文件提供給用戶,就不會(huì)遇到類似安全問(wèn)題。程序核心代碼如下:
if (file_exists($attach_filepos)) //判斷文件是否存在
{
$size = filesize($attach_filepos); //得到文件的大小
//將用戶原始文件名提供給用戶。
header("Content-Disposition: attachment; filename=".$attach_filename);
header("Content-length: ".$size);
header("Content-type: application/x-zip-compressed");
readfile($attach_filepos); //將文件讀出,提供給用戶。
}
結(jié)束語(yǔ)
該系統(tǒng)在技術(shù)上很完美地將PHP與Oracle數(shù)據(jù)庫(kù)結(jié)合起來(lái),實(shí)現(xiàn)對(duì)qmail用戶的管理及日常郵箱服務(wù)器的維護(hù)。目前該系統(tǒng)已在我公司內(nèi)部使用了一年多,效果很好。它一方面減輕了郵件管理員的日常維護(hù)工作;另一方面為不太熟悉郵件配置的用戶提供網(wǎng)上收發(fā)郵件。此系統(tǒng)還有認(rèn)證、分組管理及郵件收發(fā)、漢字編碼等方面的功能,由于篇幅有限就不一一闡述。