SMTP协议-邮件发送PHP程序代码
来源:asp之家 发布时间:2010-03-24 18:40:00
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);
}
}


猜你喜欢
- GoDaddy用户的备份文件被放在根目录的_db_backups 文件夹里。该如何是下载呢?有几种方法可以下载备份文件到本地磁盘。使用FTP
- 建立一个普通的Linux分区(主分区、逻辑分区均可)fdisk /dev/sdbCommand (m for help): pDisk /d
- 在Discuz!论坛中,有时会出现flash显示为代码,而不是被解析正确显示flas * 的情况。这种情况大多出现在从其他论坛系统转换过来的
- 织梦官方之前宣布将在7月31日发布旗下内容管理系统5.5GBK版,晚23时Dedecms 5.5 GBK版放出。5.31的升级版将在明日提供
- 说微软的IE系列产品都被众多的前端开发者臭骂,除去其对于WEB标准化的支持问题外,再者是因为其同一款产品的存活型号太多,从IE6.0-IE8
- DZ7.0+UC1.5+DEDE5.3测试通过 论坛之星/活跃会员 {dede:loop table="cdb_memb
- 在看这篇文章之前,有几点要注意:1、everyone用户完全控制目录在服务器上绝对不能出现2、WEB目录上的权限都是独立的一般情况下是读取和
- VirtualBox安装CentOS后,再安装增强功能就可以共享文件夹、粘贴板以及鼠标无缝移动,主要步骤如下:1、yum -y update
- 该注意的事项总结如下一、挂马前的安全措失A、改更默认管理目录dede,改的越复杂也好。B、检查install目录里是否存在install.l
- 一、关注于整体关键词开发如果你在新闻部门工作,你的定向关键词内容可能会包括以下的词汇类型:新闻品牌新闻频道新闻姓名新闻姓名姓名+主题事件、产
- 一、首先我们来看第一部分: 关键词分析关键词分析是所有 SEO 必须掌握的一门功课,大型网站虽然有海量的数据,但是每个页面都需要进行关键 词
- 启用网站的身份验证功能做好了上面的各项准备工作后,目标网站的SSL安全加密功能仍然还没有生效,此时我们还需要对该网站进行进一步的配置。按照前
- 12月2日消息, 56网近日宣布推出广告分成系统,视频内容方加入该系统,可以分享视频广告收益。用户分享广告价值 有效解决版权争端此次56网推
- 据BizReport报道 日前Google向他们的AdWords客户提供了新工具--活动优化者(Campaign Optimizer )。该
- 用户对SEO认识和理解众说纷纭,有认为SEO就是作弊,有认为SEO是一门了不起的学科。任何一个网站,不管其网站类型如何,是提 * 品、服务还是
- 有Godaddy主机用户说想配置一个Javaservlet,首先需要做的就是在localbox里汇编它。可以把类文档上载到WEB-INF/c
- 这几天研究了一下将spring boot应用打入到docker中运行,先前有一个maven插件,可以直接在src/main中建一个docke
- 11月10日,全球领先的电子商务服务商阿里巴巴(HK1688)发布了2009年Q3财报。财报显示,阿里巴巴国际交易市场注册用户首次突破1,0
- 百度k站也是有一定规律可寻的 ,我总结了几点,也许大家用的着。总的原则是在百度没关键词没带去多少ip的站基本不k 。要k的起码你的站从bai
- 目前,在广大站长的殷切期盼下,康盛创想(Comsenz)旗下的UCenter Home(简称UCHome)体验站陆续推出了涂鸦版、凑热闹、在