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);
}
}


标签:smtp,邮件,程序,php
0
投稿

猜你喜欢

  • GoDaddy:如何在File Manager里的多个项目上执行某个操作

    2010-04-30 12:35:00
  • VMware Tools一直灰色 无法安装问题及解决方案

    2023-01-08 21:27:08
  • GoDaddy:如何设置301重定向 Godaddy

    2010-04-07 13:04:00
  • 网站经营的终极技术

    2008-10-04 17:16:00
  • WordPress模板技术手册

    2009-04-23 10:31:00
  • Windows Azure 平台重置Linux密码的方法

    2023-11-03 12:53:37
  • 解析Win 2000中的EXE文件(3)

    2007-08-31 14:09:00
  • 确保服务器稳定七大注意事项

    2009-06-18 10:17:00
  • 电信企业为何看好刀片服务器?

    2010-05-13 18:17:00
  • Centos6.5全自动安装 vsftpd+dhcp+nfs+tftp

    2023-10-05 06:29:44
  • 草根站长要成功,应该从思想上突围

    2007-12-03 21:11:00
  • 浅谈简单使用CentOS7防火墙及开放端口

    2023-11-03 04:57:32
  • 说说我做站四年的经历 简单而艰辛

    2008-12-17 11:50:00
  • UCenter Home 2.0测试 十大热点道具功能早知道

    2009-07-31 12:09:00
  • Mozilla基金会称火狐3.6不会跳票 12月发布

    2009-11-07 07:50:00
  • 纯中文“.中国”域名会走多远

    2009-11-12 12:46:00
  • 英国网游开“网眼” 借监控探头抓坏人赚钱

    2009-10-09 09:02:00
  • phpwindV6.3关于前台银行操作日志链接问题

    2009-02-20 15:35:00
  • Win 2000常用系统进程列表

    2007-10-22 13:58:00
  • 让你的IIS服务器支持JSP

    2008-04-02 12:07:00
  • asp之家 网站运营 m.aspxhome.com