- /***********************************************************************************
-
- 使用说明:
-
- $m= new SendM('smtp服务器地址','账号','密码',端口(int),超时重试时间(int));
- $m->Send('收件人邮箱 ','主题','邮件正文内容');
-
- 使用范例:
-
- $m= new SendM('smtp.yeah.net','testuser','testuserpwd',25,30);
- $m->Send('a@coolmr.com ','测试邮件','这是一封邮件发送类的测试邮件,谢谢您的支持');
-
- *************************************************************************************/
- class SendM{
-
- private $Mailhost,$Mailuser,$Mailpwd,$Mailport,$Mailtimeout,$ms,$ending = "\r\n",$endingc="\n";
-
- function __construct($Mailhost,$Mailuser,$Mailpwd,$Mailport,$Mailtimeout){
-
- $this->Mailhost=$Mailhost;
-
- $this->Mailuser=$Mailuser;
-
- $this->Mailpwd=$Mailpwd;
-
- $this->Mailport=$Mailport;
-
- $this->Mailtimeout=$Mailtimeout;
-
- $this->ConnectSmtpServer();
-
- }
-
- private function ConnectSmtpServer(){
-
- if(!is_string($this->Mailhost)){ settype(trim($this->Mailhost),"string"); }
-
- if(!is_integer($this->Mailport)){ settype(trim($this->Mailport),"integer"); }
-
- if(!is_integer($this->Mailtimeout)){ settype(trim($this->Mailtimeout),"integer"); }
-
- $this->ms=@fsockopen($this->Mailhost,$this->Mailport,$this->errorno,$this->errorstr,$this->Mailtimeout);
-
- if(substr(PHP_OS,0,3) != "WIN"){ stream_set_timeout($this->ms, $this->Mailtimeout, 0);}
-
- $rcp = $this->get_echo();
-
- fputs($this->ms,"ehlo bobo".$this->ending);
-
- $rcp = $this->get_echo();
-
- if(substr($rcp,0,3)!='250'){ return false; }
-
- fputs($this->ms,'auth login'.$this->ending);
-
- $rcp = $this->get_echo();
-
- if(substr($rcp,0,3)=='334'){ $this->Auth($this->Mailuser,$this->Mailpwd); }else{ return false; } }
-
- private function Auth($Mailuser,$Mailpwd){
-
- $this->Mailuseren=base64_encode($Mailuser); $this->Mailpwden=base64_encode($Mailpwd);
-
- fputs($this->ms,$this->Mailuseren.$this->ending);
-
- $rcp = $this->get_echo();
-
- fputs($this->ms,$this->Mailpwden.$this->ending);
-
- $rcp = $this->get_echo(); }
-
- private function get_echo(){
-
- $edata=""; while($estr=@fgets($this->ms,600)){ $edata .= $estr;
-
- if(substr($estr,3,1) == " ") { break; } }
-
- return $edata; }
-
- public function Send($to,$subject,$connect){
-
- $host=explode('.',$this->Mailhost);
-
- $fromaddress=$this->Mailuser.'@'.$host[1].'.'.$host[2];
-
- fputs($this->ms,'mail from:<'.$fromaddress.'>'.$this->ending);
-
- $rcp = $this->get_echo();
-
- fputs($this->ms,'rcpt to:<'.$to.'>'.$this->ending);
-
- $rcp = $this->get_echo();
-
- fputs($this->ms,'data'.$this->ending);
-
- $rcp = $this->get_echo();
-
- fputs($this->ms,"to:$to".$this->endingc);
-
- fputs($this->ms,"from:$fromaddress".$this->endingc);
-
- fputs($this->ms,"subject:$subject".$this->endingc.$this->endingc);
-
- fputs($this->ms,"$connect".$this->endingc);
-
- fputs($this->ms,'.'.$this->ending);
- $rcp = $this->get_echo(); if(substr($rcp,0,3)=='250'){header("Location:main_pro.php?act=msg&errors=on&msg=邮件发送成功!已成功提交至对方服务器!"); }else{ header("Location:main_pro.php?act=msg&errors=on&msg=很遗憾,邮件发送失败了!请检查邮件账户配置是否正确!"); }
-
- }
- }
- ?>
|