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