PHP发送电子邮件类

开发技术 作者: 2024-07-27 21:00:02
PHP发送电子邮件类

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

<?PHP
/***********************************************************************************
   
   使用说明:
   
      $m= new SendM('smtp服务器地址','账号','密码',端口(int),超时重试时间(int)); 

      $m->Send('收件人邮箱 ','主题','邮件正文内容');
   
   使用范例:
   
      $m= new SendM('smtp.yeah.net','testuser','testuserpwd',25,30); 

      $m->Send('[email protected] ','测试邮件','这是一封邮件发送类的测试邮件,谢谢您的支持');
   
*************************************************************************************/

class SendM{
	
	private $Mailhost,$Mailuser,$Mailpwd,$Mailport,$Mailtimeout,$ms,$ending = "\r\n",$endingc="\n";
	
	function __construct($Mailhost,$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->[email protected]($this->Mailhost,$this->Mailport,$this->errorno,$this->errorstr,$this->Mailtimeout); 
	 
	    if(substr(PHP_OS,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,3)!='250'){ return false; }
	    
	    fputs($this->ms,'auth login'.$this->ending);
	   
	    $rcp = $this->get_echo();     
	  
	    if(substr($rcp,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([email protected]($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,3)=='250'){header("Location:main_pro.PHP?act=msg&errors=on&msg=邮件发送成功!已成功提交至对方服务器!"); }else{ header("Location:main_pro.PHP?act=msg&errors=on&msg=很遗憾,邮件发送失败了!请检查邮件账户配置是否正确!"); }
				
		}		

	}

?>

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_51891.html
PHP发送电子邮件类