strSMTPPort = "25"; $this->strFrom = ""; $this->strTo = ""; } function DoComman" /> 
快捷搜索:

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

class ZSMailBox

{

var $fpSocket;

var $strLog;

var $strSMTPServer;

var $strSMTPPort;

var $strFrom;

var $strTo;

function ZSMailBox ()

{

$this->strLog = "";

$this->strSMTPPort = "25";

$this->strFrom = "";

$this->strTo = "";

}

function DoCommand ($strCommand, $strOKReply)

{

fputs ($this->fpSocket, $strCommand);

$strReply = fgets ($this->fpSocket, 512);

if(! ereg("^$strOKReply", $strReply))

{

return false;

}

return true;

}

function WaitReply ($strOKReply)

{

$strReply = fgets ($this->fpSocket, 512);

$this->strLog .= "Reply:$strReply" . "

n";

if (! ereg ("^$strOKReply", $strReply))

{

return false;

}

return true;

}

function SendData ($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);

return true;

}

function SendMail ($strSubject, $strContent)

{

if ($this->VerifySMTPVariables ())

{

$this->strLog = "";

} else

{

$this->strLog = "Any of SMTP variables are invaild

n";

return false;

}

$this->fpSocket = fsockopen ($this->strSMTPServer, $this->strSMTPPort);

if (! $this->fpSocket)

{

$this->strLog .= "Cann't open socket

n";

return false;

}

$this->strLog .= "Open socket succeed

n";

if (! $this->WaitReply ("220"))

{

fclose ($this->fpSocket);

return false;

}

$strCommand = "HELO " . $this->strSMTPServer . "n";

if (! $this->DoCommand ($strCommand, "250"))

{

$this->strLog .= "HELO error

n";

fclose ($this->fpSocket);

return false;

}

$strCommand = "MAIL FROM: strTo . ">n";

if (! $this->DoCommand ($strCommand, "250"))

{

$this->strLog .= "MAIL error

n";

fclose ($this->fpSocket);

return false;

}

$strCommand = "RCPT TO: strTo . ">n";

if (! $this->DoCommand ($strCommand, "250"))

{

$this->strLog .= "Refuse to establish the channel

n";

fclose ($this->fpSocket);

return false;

}

$strCommand = "DATAn";

if (! $this->DoCommand ($strCommand, "354"))

{

$this->strLog .= "Refuse to recieve the data

n";

fclose ($this->fpSocket);

return false;

}

if (! $this->SendData ($strSubject, $strContent))

{

$this->strLog .= "Send data error

n";

fclose ($this->fpSocket);

return false;

}

if (! $this->WaitReply ("250"))

{

$this->strLog .= "Send data unsuccessful

n";

fclose ($this->fpSocket);

return false;

}

$strCommand = "QUITn";

if (! $this->DoCommand ($strCommand, "221"))

{

$this->strLog .= "QUIT error

n";

fclose ($this->fpSocket);

return false;

}

fclose ($this->fpSocket);

return true;

}

function VerifyMailAddr ($strMailAddr)

{

return (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$strMailAddr));

}

function VerifyWebSiteAddr ($strWebSiteAddr)

{

return (eregi ("^([_0-9a-z-]+.)+[a-z]{2,3}$", $strWebSiteAddr));

}

function VerifySMTPVariables ()

{

if (! $this->VerifyWebSiteAddr ($this->strSMTPServer))

return false;

if (! isset ($this->strSMTPPort))

return false;

if (! $this->VerifyMailAddr ($this->strFrom))

return false;

if (! $this->VerifyMailAddr ($this->strTo))

return false;

return true;

}

function SetSMTPVariables ($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;

}

}

?>

if (isset ($strTo) && ($strTo != ""))

{

if (isset ($nServer))

{

switch ($nServer)

{

case 1: $strSMTPServer = "smtp.sina.com.cn";

$strSMTPPort = "25";

$strTo .= "@sina.com";

break;

case 2: $strSMTPServer = "smtp.163.net";

$strSMTPPort = "25";

$strTo .= "@163.net";

break;

case 3: $strSMTPServer = "smtp.yeah.net";

$strSMTPPort = "25";

$strTo .= "@yeah.net";

break;

case 4: $strSMTPServer = "smtp.netease.com";

$strSMTPPort = "25";

$strTo .= "@netease.com";

break;

case 5: $strSMTPServer = "smtp.sohu.com";

$strSMTPPort = "25";

$strTo .= "@sohu.com";

break;

case 6: $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 = "No subject";

}

if (! isset ($strContent) || ($strContent == ""))

{

$strContent = "No content";

}

$zsmb = new ZSMailBox;

$zsmb->SetSMTPVariables ($strSMTPServer, $strSMTPPort, $strFrom, $strTo);

if ($zsmb->SendMail ($strSubject, $strContent))

{

printf ("OK");

} else

{

printf ($zsmb->strLog);

}

}

?>

您可能还会对下面的文章感兴趣: