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的邮件发送程序例子
相关文章:
热门推荐
- 浅谈JavaScript find 方法不支持IE的问题
- 1.css控制图片按等比例缩放实例兼容IE6/IE7/火狐/谷歌
- 2.intellij idea和eclipse比较
- 3.怎么写C语言条件判断if语句
- 4.清除laravel缓存命令代码实例
- 5.如何在FreeBSD上用PHP实现在线添加FTP用户
- 6.hbuilder里js文件是干嘛的
- 7.解决golang sync.Wait()不执行的问题
- 8.配合QMAIL邮件系统:SOLARIS + HTTPD + MYSQL + PHP + LIMITIP
- 9.C语言强制类型转换怎么做?
- 10.JS代码判断IE6,IE7,IE8,IE9的函数代码