<code>classZSMailBox<br />{<br />var$fpSocket;<br />var$strLog;<br />var$strSMTPServer;<br />var$strSMTPPort;<br />var$strFrom;<br />var$strTo;<br />functionZSMailBox()<br />{<br />$this->strLog="";<br />$this->strSMTPPort="25";<br />$this->strFrom="";<br />$this->strTo="";<br />}<br />functionDoCommand($strCommand,$strOKReply)<br />{<br />fputs($this->fpSocket,$strCommand);<br />$strReply=fgets($this->fpSocket,512);<br />if(!ereg("^$strOKReply",$strReply))<br />{<br />returnfalse;<br />}<br />returntrue;<br />}<br />functionWaitReply($strOKReply)<br />{<br />$strReply=fgets($this->fpSocket,512);<br />$this->strLog.="Reply:$strReply"."<br />n";<br />if(!ereg("^$strOKReply",$strReply))<br />{<br />returnfalse;<br />}<br />returntrue;<br />}<br />functionSendData($strSubject,$strContent)<br />{<br />$str="To:".$this->strTo.chr(13).chr(10);<br />$str.="From:".$this->strFrom.chr(13).chr(10);<br />$str.="Subject:".$strSubject.chr(13).chr(10).chr(13).chr(10);<br />$str.=$strContent;<br />$str.=chr(13).chr(10).".".chr(13).chr(10);<br />fputs($this->fpSocket,$str);<br />returntrue;<br />}<br />functionSendMail($strSubject,$strContent)<br />{<br />if($this->VerifySMTPVariables())<br />{<br />$this->strLog="";<br />}else<br />{<br />$this->strLog="AnyofSMTPvariablesareinvaild<br />n";<br />returnfalse;<br />}<br />$this->fpSocket=fsockopen($this->strSMTPServer,$this->strSMTPPort);<br />if(!$this->fpSocket)<br />{<br />$this->strLog.="Cann'topensocket<br />n";<br />returnfalse;<br />}<br />$this->strLog.="Opensocketsucceed<br />n";<br />if(!$this->WaitReply("220"))<br />{<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />$strCommand="HELO".$this->strSMTPServer."n";<br />if(!$this->DoCommand($strCommand,"250"))<br />{<br />$this->strLog.="HELOerror<br />n";<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />$strCommand="MAILFROM:<".$this->strTo.">n";<br />if(!$this->DoCommand($strCommand,"250"))<br />{<br />$this->strLog.="MAILerror<br />n";<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />$strCommand="RCPTTO:<".$this->strTo.">n";<br />if(!$this->DoCommand($strCommand,"250"))<br />{<br />$this->strLog.="Refusetoestablishthechannel<br />n";<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />$strCommand="DATAn";<br />if(!$this->DoCommand($strCommand,"354"))<br />{<br />$this->strLog.="Refusetorecievethedata<br />n";<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />if(!$this->SendData($strSubject,$strContent))<br />{<br />$this->strLog.="Senddataerror<br />n";<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />if(!$this->WaitReply("250"))<br />{<br />$this->strLog.="Senddataunsuccessful<br />n";<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />$strCommand="QUITn";<br />if(!$this->DoCommand($strCommand,"221"))<br />{<br />$this->strLog.="QUITerror<br />n";<br />fclose($this->fpSocket);<br />returnfalse;<br />}<br />fclose($this->fpSocket);<br />returntrue;<br />}<br />functionVerifyMailAddr($strMailAddr)<br />{<br />return(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$strMailAddr));<br />}<br />functionVerifyWebSiteAddr($strWebSiteAddr)<br />{<br />return(eregi("^([_0-9a-z-]+.)+[a-z]{2,3}$",$strWebSiteAddr));<br />}<br />functionVerifySMTPVariables()<br />{<br />if(!$this->VerifyWebSiteAddr($this->strSMTPServer))<br />returnfalse;<br />if(!isset($this->strSMTPPort))<br />returnfalse;<br />if(!$this->VerifyMailAddr($this->strFrom))<br />returnfalse;<br />if(!$this->VerifyMailAddr($this->strTo))<br />returnfalse;<br />returntrue;<br />}<br />functionSetSMTPVariables($strServer,$strPort,$strFrom,$strTo)<br />{<br />if(isset($strServer))<br />$this->strSMTPServer=$strServer;<br />if(isset($strPort))<br />$this->strSMTPPort=$strPort;<br />if(isset($strFrom))<br />$this->strFrom=$strFrom;<br />if(isset($strTo))<br />$this->strTo=$strTo;<br />}<br />}<br />?></code><code>$strSMTPPort="25";<br />$strTo.="@sina.com";<br />break;<br />case2:$strSMTPServer="smtp.163.net";<br />$strSMTPPort="25";<br />$strTo.="@163.net";<br />break;<br />case3:$strSMTPServer="smtp.yeah.net";<br />$strSMTPPort="25";<br />$strTo.="@yeah.net";<br />break;<br />case4:$strSMTPServer="smtp.netease.com";<br />$strSMTPPort="25";<br />$strTo.="@netease.com";<br />break;<br />case5:$strSMTPServer="smtp.sohu.com";<br />$strSMTPPort="25";<br />$strTo.="@sohu.com";<br />break;<br />case6:$strSMTPServer="smtp.263.net";<br />$strSMTPPort="25";<br />$strTo.="@263.net";<br />break;<br />default:$strSMTPServer="smtp.sina.com.cn";<br />$strSMTPPort="25";<br />$strTo="guestxyz@sina.com";<br />break;<br />}<br />}<br />if(!isset($strFrom)||($strFrom==""))<br />{<br />$strFrom=$strTo;<br />}<br />if(!isset($strSubject)||($strSubject==""))<br />{<br />$strSubject="Nosubject";<br />}<br />if(!isset($strContent)||($strContent==""))<br />{<br />$strContent="Nocontent";<br />}<br />$zsmb=newZSMailBox;<br />$zsmb->SetSMTPVariables($strSMTPServer,$strSMTPPort,$strFrom,$strTo);<br />if($zsmb->SendMail($strSubject,$strContent))<br />{<br />printf("OK");<br />}else<br />{<br />printf($zsmb->strLog);<br />}<br />}</code></p>