【php开源代码栏目提醒】:以下是网学会员为您推荐的php开源代码-class_pop3_session.php,希望本篇文章对您学习有所帮助。
<?
class pop3_session { //该类用于收取邮件
var $pop_connection,
$pop_port, //端口
$pop_error_msg, //错误信息
$pop_user, //用户名
$pop_pass, //密码
$pop_server; //服务器地址
function pop_get_line() { //获取服务器响应
global $enable_debug;
$buffer = fgets($this->pop_connection,10240);
$buffer = eregi_replace("\r","",$buffer);
$buffer = eregi_replace("\n","",$buffer);
if($enable_debug) {
$output = (eregi("^(\+OK)|^(\-ERR)",$buffer))?"<- <b>".htmlspecialchars($buffer)."</b>":htmlspecialchars($buffer);
echo("<font style=\"font-size:12px; font-family: Courier New; background-color: white; color: black;\"> $output</font><br>\r\n");flush();
}
return $buffer;
}
function pop_send_command($cmd) { //发送命令到服务器
global $enable_debug;
if($this->pop_connection) {
if($enable_debug) {
$output = (eregi("^(PASS)",$cmd))?"PASS ****":$cmd;
echo("<font style=\"font-size:12px; font-family: Courier New; background-color: white; color: black;\">-> <em><b>".htmlspecialchars($output)."</b></em></font><br>\r\n");flush();
}
fwrite($this->pop_connection,"$cmd\r\n");
return 1;
}
return 0;
}
function pop_connect() { //调用fsockopen命令连接邮件服务器
$this->pop_connection = fsockopen($this->pop_server, $this->pop_port, $errno, $errstr, 60);
if($this->pop_connection) {
$buffer = $this->pop_get_line();
if(ereg("^(\+OK)",$buffer)) return 1;
else return 0;
}
return 0;
}
function pop_auth() { //服务器用户名和密码验证
global $userfolder,$error_permiss,$temporary_directory,$idle_timeout;
if($this->pop_connection) {
$this->pop_send_command("USER ".$this->pop_user); // 发送user命令
$buffer = $this->pop_get_line();
if(ereg("^(\+OK)",$buffer)) {
$this->pop_send_command("PASS ".$this->pop_pass); //发送密码命令
$buffer = $this->pop_get_line();
if(ereg("^(\+OK)",$buffer)) {
if(!file_exists($userfolder))
if(!@mkdir($userfolder,0777)) die("<h1><br><br><br><center>$error_per
miss</center></h1>");
if(!file_exists($userfolder."inbox"))
mkdir($userfolder."inbox",0777);
if(!file_exists($userfolder."trash"))
mkdir($userfolder."trash",0777);
if(!file_exists($userfolder."sent"))
mkdir($userfolder."sent",0777);
if(!file_exists($userfolder."_attachments"))
mkdir($userfolder."_attachments",0777);
if(!file_exists($userfolder."_infos"))
mkdir($userfolder."_infos",0777);
$sessiondir = $temporary_directory."_sessions/";
// Clean old sessions
$all=opendir($sessiondir);
while ($file=readdir($all)) {
$thisfile = $sessiondir.$file;
if (is_file($thisfile)) {
$idle = intval((time()-@filemtime($thisfile))/60);
if(($idle_timeout+10) < $idle)
@unlink($thisfile);
}
}
closedir($all);
unset($all);
return 1;
}
else { $this->pop_error_msg = $buffer; return 0; }
} else return 0;
}
return 0;
}
function pop_retr_msg($mnum,$mid,$msize=10000,$check=1) { //获取邮件详细信息
global $pop_use_top,$userfolder,$appname,$appversion,$error_retrieving;
$md = new mime_decode();
if($check) {
$this->pop_send_command("TOP $mnum 0");
$buffer = $this->pop_get_line();
if(ereg("^(\+OK)",$buffer)) {
unset($header);
while (!feof($this->pop_connection)) {
$buffer = $this->pop_get_line();
if(trim($buffer) == ".") break;
if(strlen($buffer) > 3)
$header .= "$buffer\r\n";
}
$mail_info = $md->get_mail_info($header);
$mailmid = $mail_info["message-id"];
if($mid != md5($mailmid)) {
$this->pop_error_msg = $error_retrieving;
return 0;
}
} else return 0;
}
$command = ($pop_use_top)?"TOP $mnum $msize":"RETR $mnum";
$this->pop_send_command($command);
$buffer = $this->pop_get_line();
if(!ereg("^(\+OK)",$buffer)) { $this->pop_error_msg = $buffer; return 0; }
while (!feof($this->pop_connection)) {
$buffer = str_replace("\n","",$this->pop_get_line());
if(trim($buffer) == ".") break;
$msg .= "$buffer\r\n";
}
$msg = "X-Decoded-By: $appname $appversion\r\n".$msg;
$parts = $md->fetch_structure($msg);
$header = $parts["header"];
$mail_info = $md->get_mail_info($header);
$flocalname = $userfolder."inbox/".md5($mail_info["subject"].$mail_info["message-id"].$mail_info["date"]).".eml";
$tmpfile = fopen($flocalname,"wb+");
fwrite($tmpfile,$msg);
fclose($tmpfi