| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> php >> 用PHP實現POP3郵件的收取(二)
 

用PHP實現POP3郵件的收取(二)

2008-12-23 08:12:45  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  用PHP實現POP3收取郵件的類

  現在讓我們來用PHP實現一個通過POP3協議收取信件的類吧,這個類中所用到的一些sock操作的函數,不另做特殊說明,請參考php的有關資料。通過這個實例,相信你也會和我一樣,感覺到PHP中對于sock操作的靈活、方便和功能的強大。

  首先,我們來說明一下這個類中需要用到的一些內部成員變量:(這些變量應該都是對外封閉的,可是由于php對類的成員變量沒有private與publice之類的分別,只好就這麽直接定義了。這是PHP的一個令人遺憾的地方。)

  1.成員變量說明

  class pop3

  {

  var $hostname=""; // POP主機名

  var $port=110; // 主機的POP3端口,一般是110號端口

  var $timeout=5;// 連接主機的最大超時時間

  var $connection=0; // 保存與主機的連接

  var $state="DISCONNECTED"; // 保存當前的狀態

  var $debug=0;// 做爲標識,是否在調試狀態,是的話,輸出調試信息

  var $err_str='';// 如果出錯,這裏保存錯誤信息

  var $err_no;//如果出錯,這裏保存錯誤號碼

  var $resp; // 臨時保存服務器的響應信息

  var $apop; // 指示需要使用加密方式進行密碼驗證,一般服務器不需要

  var $messages; //郵件數

  var $size; //各郵件的總大小

  var $mail_list; // 一個數組,保存各個郵件的大小及其在郵件服務器上序號

  var $head=array(); // 郵件頭的內容,數組

  var $body=array(); // 郵件體的內容,數組;

  2.當然,這其中的有些變量,僅通過這樣一個簡單的說明並不能完全了解如何使用,下面我就逐個來說明這個類實現中的一些主要方法:

  Function pop3($server="192.100.100.1",$port=110,$time_out=5)

  {$this->hostname=$server;

  $this->port=$port;

  $this->timeout=$time_out;

  return true;

  }

  熟悉面向對象編程的朋友一看就會知道,這是這個類的構造函數,在初始化這個類時,可以給出這幾個最基本的參數:pop3服務器的地址,端口號,及連接服務器時的最大超時時間。一般來說,只需要給出POP3服務器的地址就行了。

  Function open()

  {

  if($this->hostname=="")

  {$this->err_str="無效的主機名!!";

  return false;

  }

  if ($this->debug) echo "正在打開$this->hostname,$this->port,&$err_no, &$err_str, $this->timeout<BR>";

  if (!$this->connection=fsockopen($this->hostname,$this->port,&$err_no, &$err_str, $this->timeout))

  {

  $this->err_str="連接到POP服務器失敗,錯誤信息:".$err_str."錯誤號:".$err_no;

  return false;

  }

  else

  {

  $this->getresp();

  if($this->debug)

   $this->outdebug($this->resp);

  if (substr($this->resp,0,3)!="+OK")

  {$this->err_str="服務器返回無效的信息:".$this->resp."請檢查POP服務器是否正確";

  return false;

  }

  $this->state="AUTHORIZATION";

  return true;

  }

  }

  該方法不需要任何參數就可建立與POP3服務器的sock連接。該方法又用到了另一個類中的方法$this->getresp();下面是這個方法的聲明:

  Function getresp()

  {

  for($this->resp="";;)

  {

  if(feof($this->connection))

  return false;

  $this->resp.=fgets($this->connection,100);

  $length=strlen($this->resp);

  if($length>=2 && substr($this->resp,$length-2,2)=="\r\n")

  {

   $this->resp=strtok($this->resp,"\r\n");

  return true;

  }

  }

  }

  這個方法取得服務器端的返回信息並進行簡單的處理:去掉最後的回車換行符,將返回信息保存在resp這個內部變量中。這個方法在後面的多個操作中都將用到。另外,還有個小方法也在後面的多個操作中用到:

  Function outdebug($message)

  {

  echo htmlspecialchars($message)."<br>\n";

  }

  它的作用就是把調試信息$message顯示出來,並把一些特殊字符進行轉換以及在行尾加上<br>標簽,這樣是爲了使其輸出的調試信息便于閱讀和分析。

  建立起與服務器的sock連接之後,就要給服務器發送相關的命令了(請參見上面的與服務器對話的過程)從上面對POP對話的分析可以看到,每次都是發送一條命令,然後服務器給予一定的回應,如果命令的執行是對的,回應一般是以+OK開頭,後面是一些描述信息,所以,我們可以做一個通過發送命令的方法:

  Function command($command,$return_lenth=1,$return_code='+')

  {

  if ($this->connection==0)

  {

  $this->err_str="沒有連接到任何服務器,請檢查網絡連接";

  return false;

  }

  if ($this->debug)

  $this->outdebug(">>> $command");

  if (!fputs($this->connection,"$command\r\n"))

  {

  $this->err_str="無法發送命令".$command;

  return false;

  }

  else

  {

  $this->getresp();

  if($this->debug)

   $this->outdebug($this->resp);

  if (substr($this->resp,0,$return_lenth)!=$return_code)

  {

  $this->err_str=$command." 命令服務器返回無效:".$this->resp;

  return false;

  }

  else

  return true;

  }

  }

  這個方法可以接受三個參數: $command--> 發送給服務器的命令; $return_lenth,$return_code ,指定從服務器的返回中取多長的值做爲命令返回的標識以及這個標識的正確值是什麽。對于一般的pop操作來說,如果服務器的返回第一個字符爲"+",則可以認爲命令是正確執行了。也可以用前面提到過的三個字符"+OK"做爲判斷的標識。

  下面介紹的幾個方法則可以按照前述收取信件的對話去理解,因爲有關的內容已經在前面做了說明,因此下面的方法不做詳細的說明,請參考其中的注釋:

  Function Login($user,$password)//發送用戶名及密碼,登錄到服務器

  {

  if($this->state!="AUTHORIZATION")

  {

  $this->err_str="還沒有連接到服務器或狀態不對";

  return false;

  }

  if (!$this->apop) //服務器是否采用APOP用戶認證

  {

  if (!$this->command("USER $user",3,"+OK")) return false;

  if (!$this->command("PASS $password",3,"+OK")) return false;

  }

  else

  {

  //echo $this->resp=strtok($this->resp,"\r\n");

  if (!$this->command("APOP $user ".md5($this->greeting.$password),3,"+OK")) return false;

  }

  $this->state="TRANSACTION"; // 用戶認證通過,進入傳送模式

  return true;

  }

  Function stat() // 對應著stat命令,取得總的郵件數與總的大小

  {

  if($this->state!="TRANSACTION")

  {

  $this->err_str="還沒有連接到服務器或沒有成功登錄";

  return false;

  }

  if (!$this->command("STAT",3,"+OK"))

  return false;

  else

  {

  $this->resp=strtok($this->resp," ");

  $this->messages=strtok(" "); // 取得郵件總數

  $this->size=strtok(" "); //取得總的字節大小

  return true;

  }

  }

  Function listmail($mess=null,$uni_id=null) //對應的是LIST命令,取得每個郵件的大小及序號。一般來說用到的是List命令,如果指定了$uni_id ,則使用UIDL命令,返回的是每個郵件的標識符,事實上,這個標識符一般是沒有什麽用的。取得的各個郵件的大小返回到類的內部變量mail_list這個二維數組裏。

  {

  if($this->state!="TRANSACTION")

  {

  $this->err_str="還沒有連接到服務器或沒有成功登錄";

  return false;

  }

  if ($uni_id)

  $command="UIDL ";

  else

  $command="LIST ";

  if ($mess)

  $command.=$mess;

  if (!$this->command($command,3,"+OK"))

  {

  //echo $this->err_str;

  return false;

  }

  else

  {

  $i=0;

  $this->mail_list=array();

  $this->getresp();

  while ($this->resp!=".")

  { $i++;

  if ($this->debug)

  {

  $this->outdebug($this->resp);

  }

  if ($uni_id)

  {

  $this->mail_list[$i][num]=strtok($this->resp," ");

  $this->mail_list[$i][size]=strtok(" ");

  }

  else

  {

  $this->mail_list[$i]["num"]=intval(strtok($this->resp," "));

  $this->mail_list[$i]["size"]=intval(strtok(" "));

  }

  $this->getresp();

  }

  return true;

  }

  }

  function getmail($num=1,$line=-1)// 取得郵件的內容,$num是郵件的序號,$line是指定共取得正文的多少行。有些時候,如郵件比較大而我們只想先查看郵件的主題時是必須指定行數的。默認值$line=-1,即取回所有的郵件內容,取得的內容存放到內部變量$head,$body兩個數組裏,數組裏的每一個元素對應的是郵件源代碼的一行。

  {

  if($this->state!="TRANSACTION")

  {

  $this->err_str="不能收取信件,還沒有連接到服務器或沒有成功登錄";

  return false;

  }

  if ($line<0)

  $command="RETR $num";

  else

  $command="TOP $num $line";

  if (!$this->command("$command",3,"+OK"))

  return false;

  else

  {

  $this->getresp();

  $is_head=true;

  while ($this->resp!=".") // . 號是郵件結束的標識

  {

  if ($this->debug)

  $this->outdebug($this->resp);

  if (substr($this->resp,0,1)==".")

  $this->resp=substr($this->resp,1,strlen($this->resp)-1);

  if (trim($this->resp)=="") // 郵件頭與正文部分的是一個空行

  $is_head=false;

  if ($is_head)

  $this->head[]=$this->resp;

  else

  $this->body[]=$this->resp;

  $this->getresp();

  }

  return true;

  }

  } // end function

  function dele($num) // 刪除指定序號的郵件,$num 是服務器上的郵件序號

  {

  if($this->state!="TRANSACTION")

  {

  $this->err_str="不能刪除遠程信件,還沒有連接到服務器或沒有成功登錄";

  return false;

  }

  if (!$num)

  {

  $this->err_str="刪除的參數不對";

  return false;

  }

  if ($this->command("DELE $num ",3,"+OK"))

  return true;

  else

  return false;

  }

  通過以上幾個方法,我們已經可以實現郵件的查看、收取、刪除的操作,不過別忘了最後要退出,並關閉與服務器的連接,調用下面的這個方法:

  Function Close()

  {

  if($this->connection!=0)

  {

  if($this->state=="TRANSACTION")

  $this->command("QUIT",3,"+OK");

  fclose($this->connection);

  $this->connection=0;

  $this->state="DISCONNECTED";

  }

  }
 
 
 
上一篇《用PHP實現POP3郵件的收取(三)》
下一篇《用PHP實現POP3郵件的收取(一)》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
用PHP實現POP3收取郵件的類   現在讓我們來用PHP實現一個通過POP3協議收取信件的類吧,這個類中所用到的一些sock操作的函數,不另做特殊說明,請參考php的有關資料。通過這個實例,相信你也會和我一樣,感覺到PHP中對于sock操作的靈活、方便和功能的強大。   首先,我們來說明一下這個類中需要用到的一些內部成員變量:(這些變量應該都是對外封閉的,可是由于php對類的成員變量沒有private與publice之類的分別,只好就這麽直接定義了。這是PHP的一個令人遺憾的地方。)      1.成員變量說明   class pop3   {       var $hostname=""; // POP主機名       var $port=110; // 主機的POP3端口,一般是110號端口    var $timeout=5;  // 連接主機的最大超時時間        var $connection=0; // 保存與主機的連接       var $state="DISCONNECTED"; // 保存當前的狀態        var $debug=0;  // 做爲標識,是否在調試狀態,是的話,輸出調試信息    var $err_str='';  // 如果出錯,這裏保存錯誤信息    var $err_no;   //如果出錯,這裏保存錯誤號碼    var $resp; // 臨時保存服務器的響應信息    var $apop; // 指示需要使用加密方式進行密碼驗證,一般服務器不需要    var $messages; // 郵件數    var $size; //各郵件的總大小    var $mail_list; // 一個數組,保存各個郵件的大小及其在郵件服務器上序號      var $head=array(); // 郵件頭的內容,數組    var $body=array(); // 郵件體的內容,數組;      2.當然,這其中的有些變量,僅通過這樣一個簡單的說明並不能完全了解如何使用,下面我就逐個來說明這個類實現中的一些主要方法:   Function pop3($server="192.100.100.1",$port=110,$time_out=5)   {$this->hostname=$server;    $this->port=$port;    $this->timeout=$time_out;    return true;   }   熟悉面向對象編程的朋友一看就會知道,這是這個類的構造函數,在初始化這個類時,可以給出這幾個最基本的參數:pop3服務器的地址,端口號,及連接服務器時的最大超時時間。一般來說,只需要給出POP3服務器的地址就行了。   Function open()   {   if($this->hostname=="")     {$this->err_str="無效的主機名!!";    return false;    }     if ($this->debug) echo "正在打開 $this->hostname,$this->port,&$err_no, &$err_str, $this->timeout<BR>";   if (!$this->connection=fsockopen($this->hostname,$this->port,&$err_no, &$err_str, $this->timeout))    {    $this->err_str="連接到POP服務器失敗,錯誤信息:".$err_str."錯誤號:".$err_no;    return false;    }    else    {    $this->getresp();    if($this->debug)               $this->outdebug($this->resp);    if (substr($this->resp,0,3)!="+OK")    {$this->err_str="服務器返回無效的信息:".$this->resp."請檢查POP服務器是否正確";    return false;    }    $this->state="AUTHORIZATION";    return true;    }   }   該方法不需要任何參數就可建立與POP3服務器的sock連接。該方法又用到了另一個類中的方法$this->getresp();下面是這個方法的聲明:   Function getresp()    {    for($this->resp="";;)      {          if(feof($this->connection))                return false;            $this->resp.=fgets($this->connection,100);            $length=strlen($this->resp);            if($length>=2 && substr($this->resp,$length-2,2)=="\r\n")            {             $this->resp=strtok($this->resp,"\r\n");    return true;            }           }       }   這個方法取得服務器端的返回信息並進行簡單的處理:去掉最後的回車換行符,將返回信息保存在resp這個內部變量中。這個方法在後面的多個操作中都將用到。另外,還有個小方法也在後面的多個操作中用到:   Function outdebug($message)   {    echo htmlspecialchars($message)."<br>\n";   }   它的作用就是把調試信息$message顯示出來,並把一些特殊字符進行轉換以及在行尾加上<br>標簽,這樣是爲了使其輸出的調試信息便于閱讀和分析。   建立起與服務器的sock連接之後,就要給服務器發送相關的命令了(請參見上面的與服務器對話的過程)從上面對 POP對話的分析可以看到,每次都是發送一條命令,然後服務器給予一定的回應,如果命令的執行是對的,回應一般是以+OK開頭,後面是一些描述信息,所以,我們可以做一個通過發送命令的方法:   Function command($command,$return_lenth=1,$return_code='+')   {    if ($this->connection==0)    {    $this->err_str="沒有連接到任何服務器,請檢查網絡連接";    return false;    }    if ($this->debug)    $this->outdebug(">>> $command");    if (!fputs($this->connection,"$command\r\n"))    {    $this->err_str="無法發送命令".$command;    return false;    }    else    {    $this->getresp();    if($this->debug)       $this->outdebug($this->resp);    if (substr($this->resp,0,$return_lenth)!=$return_code)    {    $this->err_str=$command." 命令服務器返回無效:".$this->resp;    return false;    }     else    return true;     }   }   這個方法可以接受三個參數: $command--> 發送給服務器的命令; $return_lenth,$return_code ,指定從服務器的返回中取多長的值做爲命令返回的標識以及這個標識的正確值是什麽。對于一般的pop操作來說,如果服務器的返回第一個字符爲"+",則可以認爲命令是正確執行了。也可以用前面提到過的三個字符"+OK"做爲判斷的標識。   下面介紹的幾個方法則可以按照前述收取信件的對話去理解,因爲有關的內容已經在前面做了說明,因此下面的方法不做詳細的說明,請參考其中的注釋:   Function Login($user,$password) //發送用戶名及密碼,登錄到服務器   {   if($this->state!="AUTHORIZATION")    {    $this->err_str="還沒有連接到服務器或狀態不對";    return false;    }   if (!$this->apop) //服務器是否采用APOP用戶認證    {    if (!$this->command("USER $user",3,"+OK")) return false;    if (!$this->command("PASS $password",3,"+OK")) return false;    }   else    {    //echo $this->resp=strtok($this->resp,"\r\n");    if (!$this->command("APOP $user ".md5($this->greeting.$password),3,"+OK")) return false;    }   $this->state="TRANSACTION"; // 用戶認證通過,進入傳送模式   return true;   }      Function stat() // 對應著stat命令,取得總的郵件數與總的大小   {   if($this->state!="TRANSACTION")    {    $this->err_str="還沒有連接到服務器或沒有成功登錄";    return false;    }   if (!$this->command("STAT",3,"+OK"))    return false;    else    {    $this->resp=strtok($this->resp," ");    $this->messages=strtok(" "); // 取得郵件總數    $this->size=strtok(" "); //取得總的字節大小    return true;    }   }   Function listmail($mess=null,$uni_id=null) //對應的是LIST命令,取得每個郵件的大小及序號。一般來說用到的是List命令,如果指定了$uni_id ,則使用UIDL命令,返回的是每個郵件的標識符,事實上,這個標識符一般是沒有什麽用的。取得的各個郵件的大小返回到類的內部變量mail_list這個二維數組裏。   {   if($this->state!="TRANSACTION")    {    $this->err_str="還沒有連接到服務器或沒有成功登錄";    return false;    }   if ($uni_id)    $command="UIDL ";    else    $command="LIST ";   if ($mess)    $command.=$mess;     if (!$this->command($command,3,"+OK"))    {    //echo $this->err_str;    return false;    }    else    {    $i=0;    $this->mail_list=array();    $this->getresp();    while ($this->resp!=".")    { $i++;    if ($this->debug)    {    $this->outdebug($this->resp);    }    if ($uni_id)    {    $this->mail_list[$i][num]=strtok($this->resp," ");    $this->mail_list[$i][size]=strtok(" ");    }    else    {    $this->mail_list[$i]["num"]=intval(strtok($this->resp," "));    $this->mail_list[$i]["size"]=intval(strtok(" "));    }    $this->getresp();    }    return true;    }   }   function getmail($num=1,$line=-1) // 取得郵件的內容,$num是郵件的序號,$line是指定共取得正文的多少行。有些時候,如郵件比較大而我們只想先查看郵件的主題時是必須指定行數的。默認值$line=-1,即取回所有的郵件內容,取得的內容存放到內部變量$head,$body兩個數組裏,數組裏的每一個元素對應的是郵件源代碼的一行。   {   if($this->state!="TRANSACTION")    {    $this->err_str="不能收取信件,還沒有連接到服務器或沒有成功登錄";    return false;    }   if ($line<0)    $command="RETR $num";   else    $command="TOP $num $line";      if (!$this->command("$command",3,"+OK"))    return false;    else    {    $this->getresp();    $is_head=true;    while ($this->resp!=".") // . 號是郵件結束的標識    {    if ($this->debug)    $this->outdebug($this->resp);    if (substr($this->resp,0,1)==".")    $this->resp=substr($this->resp,1,strlen($this->resp)-1);    if (trim($this->resp)=="") // 郵件頭與正文部分的是一個空行    $is_head=false;    if ($is_head)    $this->head[]=$this->resp;    else    $this->body[]=$this->resp;    $this->getresp();    }    return true;    }   } // end function      function dele($num) // 刪除指定序號的郵件,$num 是服務器上的郵件序號   {    if($this->state!="TRANSACTION")    {    $this->err_str="不能刪除遠程信件,還沒有連接到服務器或沒有成功登錄";    return false;    }    if (!$num)    {    $this->err_str="刪除的參數不對";    return false;    }    if ($this->command("DELE $num ",3,"+OK"))    return true;    else    return false;   }   通過以上幾個方法,我們已經可以實現郵件的查看、收取、刪除的操作,不過別忘了最後要退出,並關閉與服務器的連接,調用下面的這個方法:   Function Close()   {   if($this->connection!=0)    {    if($this->state=="TRANSACTION")    $this->command("QUIT",3,"+OK");    fclose($this->connection);      $this->connection=0;    $this->state="DISCONNECTED";    }   }
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
小龍女彤彤之情溢皇都
龔潔
智能手機形象美女
崔潔彤
回家的路上----
中國一站(哈爾濱)
清明植物園的花。
桃花堤印象之豎版
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有