SMTP协议-PHP的邮件发送程序例子

【字号: 日期:2024-10-22浏览:25作者:雯心

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='AnyofSMTPvariablesareinvaildn';returnfalse;}$this->fpSocket=fsockopen($this->strSMTPServer,$this->strSMTPPort);if(!$this->fpSocket){$this->strLog.='Cann'topensocketn';returnfalse;}$this->strLog.='OpensocketsUCceedn';if(!$this->WaitReply('220')){fclose($this->fpSocket);returnfalse;}$strCommand='HELO'.$this->strSMTPServer.'n';if(!$this->DoCommand($strCommand,'250')){$this->strLog.='HELOerrorn';fclose($this->fpSocket);returnfalse;}$strCommand='MAILFROM:<'.$this->strTo.'>n';if(!$this->DoCommand($strCommand,'250')){$this->strLog.='MAILerrorn';fclose($this->fpSocket);returnfalse;}$strCommand='RCPTTO:<'.$this->strTo.'>n';if(!$this->DoCommand($strCommand,'250')){$this->strLog.='Refusetoestablishthechanneln';fclose($this->fpSocket);returnfalse;}$strCommand='DATAn';if(!$this->DoCommand($strCommand,'354')){$this->strLog.='Refusetorecievethedatan';fclose($this->fpSocket);returnfalse;}if(!$this->SendData($strSubject,$strContent)){$this->strLog.='Senddataerrorn';fclose($this->fpSocket);returnfalse;}if(!$this->WaitReply('250')){$this->strLog.='Senddataunsuccessfuln';fclose($this->fpSocket);returnfalse;}$strCommand='QUITn';if(!$this->DoCommand($strCommand,'221')){$this->strLog.='QUITerrorn';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;}}?>

相关文章: