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;}}?>
SMTP协议-PHP的邮件发送程序例子
相关文章:
热门推荐
- 用ports安裝apache13_modssl+mysql+php+phpmyadmin
- 1.配合QMAIL邮件系统:SOLARIS + HTTPD + MYSQL + PHP + LIMITIP
- 2.深入理解abstract class和interface
- 3.hbuildercss怎么用
- 4.Golang 语言高效使用字符串的方法
- 5.C#怎么输入输出语句怎么写
- 6.Javascript使用HoTMetal(4)实例教程
- 7.PHP100教程之深入理解PHP内核类的结构
- 8.Javascript使用HoTMetal(5)实例教程
- 9.HTML5 的 Canvas 对象将改变 JavaScript 的使命
- 10.FreeBSD下安装MySQL+Apache+PHP新手指南