PHP發送電子郵件類

lpki123 9年前發布 | 1K 次閱讀 PHP

<?php
/***

使用說明:

  $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=很遺憾,郵件發送失敗了!請檢查郵件賬戶配置是否正確!"); }

    }       

}

?> </pre>

 本文由用戶 lpki123 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!