米葫芦网

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

热度:10℃ 发布时间:2023-11-16 19:40:28

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

网友评论
评论
发 布

更多软件教程
  • 软件教程推荐
更多+
Greenfoot设置中文的方法

Greenfoot设置中文的方法

Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...

07-05

Egret UI Editor修改快捷键的方法

Egret UI Editor修改快捷键的方法

Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...

07-05

KittenCode新建项目的方法

KittenCode新建项目的方法

KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...

07-05

Thonny设置中文的方法

Thonny设置中文的方法

Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...

07-05

最新软件下载