Password: >'>
"; exit; } } //$RandomMail = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',50)),20,10); //$RandomMail2 = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890',10)),0,10); if($_POST['action']=="send"){ $senderEmail=ninjaxTrim($_POST['senderEmail']); $senderName=ninjaxTrim($_POST['senderName']); $replyTo=ninjaxTrim($_POST['replyTo']); $subject=ninjaxTrim($_POST['subject']); $emailList=ninjaxTrim($_POST['emailList']); $messageType=ninjaxTrim($_POST['messageType']); $messageLetter=ninjaxTrim($_POST['messageLetter']); $messageLetter = urlencode($messageLetter); //$messageLetter = str_replace("%5C%22", "%22", $messageLetter); $messageLetter = urldecode($messageLetter); $messageLetter = stripslashes($messageLetter); $subject = stripslashes($subject); $encode = stripslashes($_POST['encode']); $shost = $_POST['shost']; $suser = $_POST['suser']; $spass = $_POST['spass']; $sport = $_POST['sport']; $sssl = $_POST['sssl']; } if($messageType==2){ $plain="checked"; } else { $html="checked"; } function ninjaxClear($text,$email){ $emailuser = preg_replace('/([^@]*).*/', '$1', $email); $text = str_replace("[-time-]", date("m/d/Y h:i:s a", time()), $text); $text = str_replace("[-email-]", $email, $text); $text = str_replace("[-emailuser-]", $emailuser, $text); $text = str_replace("[-randomletters-]", substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',50)),20,10), $text); $text = str_replace("[-randomstring-]", substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890',10)),0,10) , $text); $text = str_replace("[-randomnumber-]", randString('0123456789'), $text); $text = str_replace("[-randommd5-]", md5(randString('abcdefghijklmnopqrstuvwxyz0123456789')), $text); return $text; } function ninjaxTrim($string){ return stripslashes(ltrim(rtrim($string))); } function randString($consonants) { $length=rand(12,25); $password = ''; for ($i = 0; $i < $length; $i++) { $password .= $consonants[(rand() % strlen($consonants))]; } return $password; } function ninjaxMailCheck($email){ if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $mailParts = explode('@', $email); if(checkdnsrr(array_pop($mailParts), 'MX')){ return true;} else{return false;} } else{return false;} } class PHPMailer{const CHARSET_ISO88591='iso-8859-1';const CHARSET_UTF8='utf-8';const CONTENT_TYPE_PLAINTEXT='text/plain';const CONTENT_TYPE_TEXT_CALENDAR='text/calendar';const CONTENT_TYPE_TEXT_HTML='text/html';const CONTENT_TYPE_MULTIPART_ALTERNATIVE='multipart/alternative';const CONTENT_TYPE_MULTIPART_MIXED='multipart/mixed';const CONTENT_TYPE_MULTIPART_RELATED='multipart/related';const ENCODING_7BIT='7bit';const ENCODING_8BIT='8bit';const ENCODING_BASE64='base64';const ENCODING_BINARY='binary';const ENCODING_QUOTED_PRINTABLE='quoted-printable';public $Priority;public $CharSet=self::CHARSET_ISO88591;public $ContentType=self::CONTENT_TYPE_PLAINTEXT;public $Encoding=self::ENCODING_8BIT;public $ErrorInfo='';public $From='root@localhost';public $FromName='Root User';public $Sender='';public $Subject='';public $Body='';public $AltBody='';public $Ical='';protected $MIMEBody='';protected $MIMEHeader='';protected $mailHeader='';public $WordWrap=0;public $Mailer='mail';public $Sendmail='/usr/sbin/sendmail';public $UseSendmailOptions=true;public $ConfirmReadingTo='';public $Hostname='';public $MessageID='';public $MessageDate='';public $Host='localhost';public $Port=25;public $Helo='';public $SMTPSecure='';public $SMTPAutoTLS=true;public $SMTPAuth=false;public $SMTPOptions=[];public $Username='';public $Password='';public $AuthType='';protected $oauth;public $Timeout=300;public $dsn='';public $SMTPDebug=0;public $Debugoutput='echo';public $SMTPKeepAlive=false;public $SingleTo=false;protected $SingleToArray=[];public $do_verp=false;public $AllowEmpty=false;public $DKIM_selector='';public $DKIM_identity='';public $DKIM_passphrase='';public $DKIM_domain='';public $DKIM_copyHeaderFields=true;public $DKIM_extraHeaders=[];public $DKIM_private='';public $DKIM_private_string='';public $action_function='';public $XMailer='';public static $validator='php';protected $smtp;protected $to=[];protected $cc=[];protected $bcc=[];protected $ReplyTo=[];protected $all_recipients=[];protected $RecipientsQueue=[];protected $ReplyToQueue=[];protected $attachment=[];protected $CustomHeader=[];protected $lastMessageID='';protected $message_type='';protected $boundary=[];protected $language=[];protected $error_count=0;protected $sign_cert_file='';protected $sign_key_file='';protected $sign_extracerts_file='';protected $sign_key_pass='';protected $exceptions=false;protected $uniqueid='';const VERSION='1.3.3.7';const STOP_MESSAGE=0;const STOP_CONTINUE=1;const STOP_CRITICAL=2;protected static $LE=" ";const MAX_LINE_LENGTH=998;const STD_LINE_LENGTH=76;public function __construct($exceptions=null){if(null!==$exceptions){$this->exceptions=(bool) $exceptions;}$this->Debugoutput=(strpos(PHP_SAPI,'cli')!==false?'echo':'html');}public function __destruct(){$this->smtpClose();}private function mailPassthru($to,$subject,$body,$header,$params){if(ini_get('mbstring.func_overload')&1){$subject=$this->secureHeader($subject);}else{$subject=$this->encodeHeader($this->secureHeader($subject));}if(!$this->UseSendmailOptions or null===$params){$result=@mail($to,$subject,$body,$header);}else{$result=@mail($to,$subject,$body,$header,$params);}return $result;}protected function edebug($str){if($this->SMTPDebug <= 0){return;}if($this->Debugoutput instanceof PsrLogLoggerInterface){$this->Debugoutput->debug($str);return;}if(!in_array($this->Debugoutput,['error_log','html','echo'])and is_callable($this->Debugoutput)){call_user_func($this->Debugoutput,$str,$this->SMTPDebug);return;}switch($this->Debugoutput){case 'error_log':error_log($str);break;case 'html':echo htmlentities(preg_replace('/[ ]+/','',$str),ENT_QUOTES,'UTF-8'),"
";break;case 'echo':default:$str=preg_replace('/ | /ms'," ",$str);echo gmdate('Y-m-d H:i:s')," ",trim(str_replace(" "," ",trim($str)))," ";}}public function isHTML($isHtml=true){if($isHtml){$this->ContentType=static::CONTENT_TYPE_TEXT_HTML;}else{$this->ContentType=static::CONTENT_TYPE_PLAINTEXT;}}public function isSMTP(){$this->Mailer='smtp';}public function isMail(){$this->Mailer='mail';}public function isSendmail(){$ini_sendmail_path=ini_get('sendmail_path');if(false===stripos($ini_sendmail_path,'sendmail')){$this->Sendmail='/usr/sbin/sendmail';}else{$this->Sendmail=$ini_sendmail_path;}$this->Mailer='sendmail';}public function isQmail(){$ini_sendmail_path=ini_get('sendmail_path');if(false===stripos($ini_sendmail_path,'qmail')){$this->Sendmail='/var/qmail/bin/qmail-inject';}else{$this->Sendmail=$ini_sendmail_path;}$this->Mailer='qmail';}public function addAddress($address,$name=''){return $this->addOrEnqueueAnAddress('to',$address,$name);}public function addCC($address,$name=''){return $this->addOrEnqueueAnAddress('cc',$address,$name);}public function addBCC($address,$name=''){return $this->addOrEnqueueAnAddress('bcc',$address,$name);}public function addReplyTo($address,$name=''){return $this->addOrEnqueueAnAddress('Reply-To',$address,$name);}protected function addOrEnqueueAnAddress($kind,$address,$name){$address=trim($address);$name=trim(preg_replace('/[ ]+/','',$name));$pos=strrpos($address,'@');if(false===$pos){$error_message=sprintf('%s (%s): %s',$this->lang('invalid_address'),$kind,$address);$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new Exception($error_message);}return false;}$params=[$kind,$address,$name];if($this->has8bitChars(substr($address,++$pos))and static::idnSupported()){if('Reply-To'!=$kind){if(!array_key_exists($address,$this->RecipientsQueue)){$this->RecipientsQueue[$address]=$params;return true;}}else{if(!array_key_exists($address,$this->ReplyToQueue)){$this->ReplyToQueue[$address]=$params;return true;}}return false;}return call_user_func_array([$this,'addAnAddress'],$params);}protected function addAnAddress($kind,$address,$name=''){if(!in_array($kind,['to','cc','bcc','Reply-To'])){$error_message=sprintf('%s: %s',$this->lang('Invalid recipient kind'),$kind);$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new Exception($error_message);}return false;}if(!static::validateAddress($address)){$error_message=sprintf('%s (%s): %s',$this->lang('invalid_address'),$kind,$address);$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new Exception($error_message);}return false;}if('Reply-To'!=$kind){if(!array_key_exists(strtolower($address),$this->all_recipients)){$this->{$kind}[]=[$address,$name];$this->all_recipients[strtolower($address)]=true;return true;}}else{if(!array_key_exists(strtolower($address),$this->ReplyTo)){$this->ReplyTo[strtolower($address)]=[$address,$name];return true;}}return false;}public static function parseAddresses($addrstr,$useimap=true){$addresses=[];if($useimap and function_exists('imap_rfc822_parse_adrlist')){$list=imap_rfc822_parse_adrlist($addrstr,'');foreach($list as $address){if('.SYNTAX-ERROR.'!=$address->host){if(static::validateAddress($address->mailbox.'@'.$address->host)){$addresses[]=['name'=>(property_exists($address,'personal')?$address->personal:''),'address'=>$address->mailbox.'@'.$address->host,];}}}}else{$list=explode(',',$addrstr);foreach($list as $address){$address=trim($address);if(strpos($address,'<')===false){if(static::validateAddress($address)){$addresses[]=['name'=>'','address'=>$address,];}}else{list($name,$email)=explode('<',$address);$email=trim(str_replace('>','',$email));if(static::validateAddress($email)){$addresses[]=['name'=>trim(str_replace(['"',"'"],'',$name)),'address'=>$email,];}}}}return $addresses;}public function setFrom($address,$name='',$auto=true){$address=trim($address);$name=trim(preg_replace('/[ ]+/','',$name));$pos=strrpos($address,'@');if(false===$pos or(!$this->has8bitChars(substr($address,++$pos))or!static::idnSupported())and!static::validateAddress($address)){$error_message=sprintf('%s (From): %s',$this->lang('invalid_address'),$address);$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new Exception($error_message);}return false;}$this->From=$address;$this->FromName=$name;if($auto){if(empty($this->Sender)){$this->Sender=$address;}}return true;}public function getLastMessageID(){return $this->lastMessageID;}public static function validateAddress($address,$patternselect=null){if(null===$patternselect){$patternselect=static::$validator;}if(is_callable($patternselect)){return call_user_func($patternselect,$address);}if(strpos($address," ")!==false or strpos($address," ")!==false){return false;}switch($patternselect){case 'pcre':case 'pcre8':return (bool) preg_match('/^(?!(?>(?1)"?(?>\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\[ -~]|[^"])"?(?1)){65,}@)'.'((?>(?>(?>((?>(?>(?>x0Dx0A)?[ ])+|(?>[ ]*x0Dx0A)?[ ]+)?)(((?>(?2)'.'(?>[x01-x08x0Bx0Cx0E-'*-[]-x7F]|\[x00-x7F]|(?3)))*(?2))))+(?2))|(?2))?)'.'([!#-'*+/-9=?^-~-]+|"(?>(?2)(?>[x01-x08x0Bx0Cx0E-!#-[]-x7F]|\[x00-x7F]))*'.'(?2)")(?>(?1).(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)'.'(?>(?1).(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}'.'|(?!(?:.*[a-f0-9][:]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:'.'|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}'.'|[1-9]?[0-9])(?>.(?9)){3}))])(?1)$/isD',$address);case 'html5':return (bool) preg_match('/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}'.'[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD',$address);case 'php':default:return (bool) filter_var($address,FILTER_VALIDATE_EMAIL);}}public static function idnSupported(){return function_exists('idn_to_ascii')and function_exists('mb_convert_encoding');}public function punyencodeAddress($address){$pos=strrpos($address,'@');if(static::idnSupported()and!empty($this->CharSet)and false!==$pos){$domain=substr($address,++$pos);if($this->has8bitChars($domain)and@mb_check_encoding($domain,$this->CharSet)){$domain=mb_convert_encoding($domain,'UTF-8',$this->CharSet);$errorcode=0;$punycode=idn_to_ascii($domain,$errorcode,INTL_IDNA_VARIANT_UTS46);if(false!==$punycode){return substr($address,0,$pos).$punycode;}}}return $address;}public function send(){try{if(!$this->preSend()){return false;}return $this->postSend();}catch(Exception $exc){$this->mailHeader='';$this->setError($exc->getMessage());if($this->exceptions){throw $exc;}return false;}}public function preSend(){if('smtp'==$this->Mailer or('mail'==$this->Mailer and stripos(PHP_OS,'WIN')===0)){static::setLE(" ");}else{static::setLE(PHP_EOL);}if(ini_get('mail.add_x_header')==1 and 'mail'==$this->Mailer and stripos(PHP_OS,'WIN')===0 and((version_compare(PHP_VERSION,'7.0.0','>=')and version_compare(PHP_VERSION,'7.0.17','<'))or(version_compare(PHP_VERSION,'7.1.0','>=')and version_compare(PHP_VERSION,'7.1.3','<')))){trigger_error('Your version of PHP is affected by a bug that may result in corrupted messages.'.' To fix it, switch to sending using SMTP, disable the mail.add_x_header option in'.' your php.ini, switch to MacOS or Linux, or upgrade your PHP to version 7.0.17+ or 7.1.3+.',E_USER_WARNING);}try{$this->error_count=0;$this->mailHeader='';foreach(array_merge($this->RecipientsQueue,$this->ReplyToQueue)as $params){$params[1]=$this->punyencodeAddress($params[1]);call_user_func_array([$this,'addAnAddress'],$params);}if(count($this->to)+count($this->cc)+count($this->bcc)<1){throw new Exception($this->lang('provide_address'),self::STOP_CRITICAL);}foreach(['From','Sender','ConfirmReadingTo']as $address_kind){$this->$address_kind=trim($this->$address_kind);if(empty($this->$address_kind)){continue;}$this->$address_kind=$this->punyencodeAddress($this->$address_kind);if(!static::validateAddress($this->$address_kind)){$error_message=sprintf('%s (%s): %s',$this->lang('invalid_address'),$address_kind,$this->$address_kind);$this->setError($error_message);$this->edebug($error_message);if($this->exceptions){throw new Exception($error_message);}return false;}}if($this->alternativeExists()){$this->ContentType=static::CONTENT_TYPE_MULTIPART_ALTERNATIVE;}$this->setMessageType();if(!$this->AllowEmpty and empty($this->Body)){throw new Exception($this->lang('empty_message'),self::STOP_CRITICAL);}$this->Subject=trim($this->Subject);$this->MIMEHeader='';$this->MIMEBody=$this->createBody();$tempheaders=$this->MIMEHeader;$this->MIMEHeader=$this->createHeader();$this->MIMEHeader.=$tempheaders;if('mail'==$this->Mailer){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($this->Subject)));}if(!empty($this->DKIM_domain)and!empty($this->DKIM_selector)and(!empty($this->DKIM_private_string)or(!empty($this->DKIM_private)and static::isPermittedPath($this->DKIM_private)and file_exists($this->DKIM_private)))){$header_dkim=$this->DKIM_Add($this->MIMEHeader.$this->mailHeader,$this->encodeHeader($this->secureHeader($this->Subject)),$this->MIMEBody);$this->MIMEHeader=rtrim($this->MIMEHeader," ").static::$LE.static::normalizeBreaks($header_dkim).static::$LE;}return true;}catch(Exception $exc){$this->setError($exc->getMessage());if($this->exceptions){throw $exc;}return false;}}public function postSend(){try{switch($this->Mailer){case 'sendmail':case 'qmail':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:$sendMethod=$this->Mailer.'Send';if(method_exists($this,$sendMethod)){return $this->$sendMethod($this->MIMEHeader,$this->MIMEBody);}return $this->mailSend($this->MIMEHeader,$this->MIMEBody);}}catch(Exception $exc){$this->setError($exc->getMessage());$this->edebug($exc->getMessage());if($this->exceptions){throw $exc;}}return false;}protected function sendmailSend($header,$body){if(!empty($this->Sender)and self::isShellSafe($this->Sender)){if('qmail'==$this->Mailer){$sendmailFmt='%s -f%s';}else{$sendmailFmt='%s -oi -f%s -t';}}else{if('qmail'==$this->Mailer){$sendmailFmt='%s';}else{$sendmailFmt='%s -oi -t';}}$sendmail=sprintf($sendmailFmt,escapeshellcmd($this->Sendmail),$this->Sender);if($this->SingleTo){foreach($this->SingleToArray as $toAddr){$mail=@popen($sendmail,'w');if(!$mail){throw new Exception($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}fwrite($mail,'To: '.$toAddr." ");fwrite($mail,$header);fwrite($mail,$body);$result=pclose($mail);$this->doCallback(($result==0),[$toAddr],$this->cc,$this->bcc,$this->Subject,$body,$this->From,[]);if(0!==$result){throw new Exception($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}}}else{$mail=@popen($sendmail,'w');if(!$mail){throw new Exception($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}fwrite($mail,$header);fwrite($mail,$body);$result=pclose($mail);$this->doCallback(($result==0),$this->to,$this->cc,$this->bcc,$this->Subject,$body,$this->From,[]);if(0!==$result){throw new Exception($this->lang('execute').$this->Sendmail,self::STOP_CRITICAL);}}return true;}protected static function isShellSafe($string){if(escapeshellcmd($string)!==$string or!in_array(escapeshellarg($string),["'$string'",""$string""])){return false;}$length=strlen($string);for($i=0;$i<$length;++$i){$c=$string[$i];if(!ctype_alnum($c)&&strpos('@_-.',$c)===false){return false;}}return true;}protected static function isPermittedPath($path){return!preg_match('#^[a-z]+://#i',$path);}protected function mailSend($header,$body){$toArr=[];foreach($this->to as $toaddr){$toArr[]=$this->addrFormat($toaddr);}$to=implode(', ',$toArr);$params=null;if(!empty($this->Sender)and static::validateAddress($this->Sender)){if(self::isShellSafe($this->Sender)){$params=sprintf('-f%s',$this->Sender);}}if(!empty($this->Sender)and static::validateAddress($this->Sender)){$old_from=ini_get('sendmail_from');ini_set('sendmail_from',$this->Sender);}$result=false;if($this->SingleTo and count($toArr)>1){foreach($toArr as $toAddr){$result=$this->mailPassthru($toAddr,$this->Subject,$body,$header,$params);$this->doCallback($result,[$toAddr],$this->cc,$this->bcc,$this->Subject,$body,$this->From,[]);}}else{$result=$this->mailPassthru($to,$this->Subject,$body,$header,$params);$this->doCallback($result,$this->to,$this->cc,$this->bcc,$this->Subject,$body,$this->From,[]);}if(isset($old_from)){ini_set('sendmail_from',$old_from);}if(!$result){throw new Exception($this->lang('instantiate'),self::STOP_CRITICAL);}return true;}public function getSMTPInstance(){if(!is_object($this->smtp)){$this->smtp=new SMTP();}return $this->smtp;}public function setSMTPInstance(SMTP $smtp){$this->smtp=$smtp;return $this->smtp;}protected function smtpSend($header,$body){$bad_rcpt=[];if(!$this->smtpConnect($this->SMTPOptions)){throw new Exception($this->lang('smtp_connect_failed'),self::STOP_CRITICAL);}if(''==$this->Sender){$smtp_from=$this->From;}else{$smtp_from=$this->Sender;}if(!$this->smtp->mail($smtp_from)){$this->setError($this->lang('from_failed').$smtp_from.' : '.implode(',',$this->smtp->getError()));throw new Exception($this->ErrorInfo,self::STOP_CRITICAL);}$callbacks=[];foreach([$this->to,$this->cc,$this->bcc]as $togroup){foreach($togroup as $to){if(!$this->smtp->recipient($to[0],$this->dsn)){$error=$this->smtp->getError();$bad_rcpt[]=['to'=>$to[0],'error'=>$error['detail']];$isSent=false;}else{$isSent=true;}$callbacks[]=['issent'=>$isSent,'to'=>$to[0]];}}if((count($this->all_recipients)>count($bad_rcpt))and!$this->smtp->data($header.$body)){throw new Exception($this->lang('data_not_accepted'),self::STOP_CRITICAL);}$smtp_transaction_id=$this->smtp->getLastTransactionID();if($this->SMTPKeepAlive){$this->smtp->reset();}else{$this->smtp->quit();$this->smtp->close();}foreach($callbacks as $cb){$this->doCallback($cb['issent'],[$cb['to']],[],[],$this->Subject,$body,$this->From,['smtp_transaction_id'=>$smtp_transaction_id]);}if(count($bad_rcpt)>0){$errstr='';foreach($bad_rcpt as $bad){$errstr.=$bad['to'].': '.$bad['error'];}throw new Exception($this->lang('recipients_failed').$errstr,self::STOP_CONTINUE);}return true;}public function smtpConnect($options=null){if(null===$this->smtp){$this->smtp=$this->getSMTPInstance();}if(null===$options){$options=$this->SMTPOptions;}if($this->smtp->connected()){return true;}$this->smtp->setTimeout($this->Timeout);$this->smtp->setDebugLevel($this->SMTPDebug);$this->smtp->setDebugOutput($this->Debugoutput);$this->smtp->setVerp($this->do_verp);$hosts=explode(';',$this->Host);$lastexception=null;foreach($hosts as $hostentry){$hostinfo=[];if(!preg_match('/^((ssl|tls)://)*([a-zA-Z0-9.-]*|[[a-fA-F0-9:]+]):?([0-9]*)$/',trim($hostentry),$hostinfo)){static::edebug($this->lang('connect_host').' '.$hostentry);continue;}if(!static::isValidHost($hostinfo[3])){static::edebug($this->lang('connect_host').' '.$hostentry);continue;}$prefix='';$secure=$this->SMTPSecure;$tls=('tls'==$this->SMTPSecure);if('ssl'==$hostinfo[2]or(''==$hostinfo[2]and 'ssl'==$this->SMTPSecure)){$prefix='ssl://';$tls=false;$secure='ssl';}elseif('tls'==$hostinfo[2]){$tls=true;$secure='tls';}$sslext=defined('OPENSSL_ALGO_SHA256');if('tls'===$secure or 'ssl'===$secure){if(!$sslext){throw new Exception($this->lang('extension_missing').'openssl',self::STOP_CRITICAL);}}$host=$hostinfo[3];$port=$this->Port;$tport=(int)$hostinfo[4];if($tport>0 and $tport<65536){$port=$tport;}if($this->smtp->connect($prefix.$host,$port,$this->Timeout,$options)){try{if($this->Helo){$hello=$this->Helo;}else{$hello=$this->serverHostname();}$this->smtp->hello($hello);if($this->SMTPAutoTLS and $sslext and 'ssl'!=$secure and $this->smtp->getServerExt('STARTTLS')){$tls=true;}if($tls){if(!$this->smtp->startTLS()){throw new Exception($this->lang('connect_host'));}$this->smtp->hello($hello);}if($this->SMTPAuth){if(!$this->smtp->authenticate($this->Username,$this->Password,$this->AuthType,$this->oauth)){throw new Exception($this->lang('authenticate'));}}return true;}catch(Exception $exc){$lastexception=$exc;$this->edebug($exc->getMessage());$this->smtp->quit();}}}$this->smtp->close();if($this->exceptions and null!==$lastexception){throw $lastexception;}return false;}public function smtpClose(){if(null!==$this->smtp){if($this->smtp->connected()){$this->smtp->quit();$this->smtp->close();}}}public function setLanguage($langcode='en',$lang_path=''){$renamed_langcodes=['br'=>'pt_br','cz'=>'cs','dk'=>'da','no'=>'nb','se'=>'sv','rs'=>'sr','tg'=>'tl',];if(isset($renamed_langcodes[$langcode])){$langcode=$renamed_langcodes[$langcode];}$PHPMAILER_LANG=['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: ','extension_missing'=>'Extension missing: ',];if(empty($lang_path)){$lang_path=dirname(__DIR__).DIRECTORY_SEPARATOR.'language'.DIRECTORY_SEPARATOR;}if(!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/',$langcode)){$langcode='en';}$foundlang=true;$lang_file=$lang_path.'phpmailer.lang-'.$langcode.'.php';if('en'!=$langcode){if(!static::isPermittedPath($lang_file)||!file_exists($lang_file)){$foundlang=false;}else{$foundlang=include $lang_file;}}$this->language=$PHPMAILER_LANG;return (bool) $foundlang;}public function getTranslations(){return $this->language;}public function addrAppend($type,$addr){$addresses=[];foreach($addr as $address){$addresses[]=$this->addrFormat($address);}return $type.': '.implode(', ',$addresses).static::$LE;}public function addrFormat($addr){if(empty($addr[1])){return $this->secureHeader($addr[0]);}return $this->encodeHeader($this->secureHeader($addr[1]),'phrase').' <'.$this->secureHeader($addr[0]).'>';}public function wrapText($message,$length,$qp_mode=false){if($qp_mode){$soft_break=sprintf(' =%s',static::$LE);}else{$soft_break=static::$LE;}$is_utf8=static::CHARSET_UTF8===strtolower($this->CharSet);$lelen=strlen(static::$LE);$crlflen=strlen(static::$LE);$message=static::normalizeBreaks($message);if(substr($message,-$lelen)==static::$LE){$message=substr($message,0,-$lelen);}$lines=explode(static::$LE,$message);$message='';foreach($lines as $line){$words=explode(' ',$line);$buf='';$firstword=true;foreach($words as $word){if($qp_mode and(strlen($word)>$length)){$space_left=$length-strlen($buf)-$crlflen;if(!$firstword){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',static::$LE);}else{$message.=$buf.$soft_break;}$buf='';}while(strlen($word)>0){if($length <= 0){break;}$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',static::$LE);}else{$buf=$part;}}}else{$buf_o=$buf;if(!$firstword){$buf.=' ';}$buf.=$word;if(strlen($buf)>$length and ''!=$buf_o){$message.=$buf_o.$soft_break;$buf=$word;}}$firstword=false;}$message.=$buf.static::$LE;}return $message;}public function utf8CharBoundary($encodedText,$maxLength){$foundSplitPos=false;$lookBack=3;while(!$foundSplitPos){$lastChunk=substr($encodedText,$maxLength-$lookBack,$lookBack);$encodedCharPos=strpos($lastChunk,'=');if(false!==$encodedCharPos){$hex=substr($encodedText,$maxLength-$lookBack+$encodedCharPos+1,2);$dec=hexdec($hex);if($dec<128){if($encodedCharPos>0){$maxLength -= $lookBack-$encodedCharPos;}$foundSplitPos=true;}elseif($dec >= 192){$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='';$result.=$this->headerLine('Date',''==$this->MessageDate?self::rfcDate():$this->MessageDate);if($this->SingleTo){if('mail'!=$this->Mailer){foreach($this->to as $toaddr){$this->SingleToArray[]=$this->addrFormat($toaddr);}}}else{if(count($this->to)>0){if('mail'!=$this->Mailer){$result.=$this->addrAppend('To',$this->to);}}elseif(count($this->cc)==0){$result.=$this->headerLine('To','undisclosed-recipients:;');}}$result.=$this->addrAppend('From',[[trim($this->From),$this->FromName]]);if(count($this->cc)>0){$result.=$this->addrAppend('Cc',$this->cc);}if(('sendmail'==$this->Mailer or 'qmail'==$this->Mailer or 'mail'==$this->Mailer)and count($this->bcc)>0){$result.=$this->addrAppend('Bcc',$this->bcc);}if(count($this->ReplyTo)>0){$result.=$this->addrAppend('Reply-To',$this->ReplyTo);}if('mail'!=$this->Mailer){$result.=$this->headerLine('Subject',$this->encodeHeader($this->secureHeader($this->Subject)));}if(''!=$this->MessageID and preg_match('/^<.*@.*>$/',$this->MessageID)){$this->lastMessageID=$this->MessageID;}else{$this->lastMessageID=sprintf('<%s@%s>',$this->uniqueid,$this->serverHostname());}$result.=$this->headerLine('Message-ID',$this->lastMessageID);if(null!==$this->Priority){$result.=$this->headerLine('X-Priority',$this->Priority);}if(''==$this->XMailer){$result.=$this->headerLine('X-Mailer','✖️1߷'.self::VERSION.'߷߷');}else{$myXmailer=trim($this->XMailer);if($myXmailer){$result.=$this->headerLine('X-Mailer',$myXmailer);}}if(''!=$this->ConfirmReadingTo){$result.=$this->headerLine('Disposition-Notification-To','<'.$this->ConfirmReadingTo.'>');}foreach($this->CustomHeader as $header){$result.=$this->headerLine(trim($header[0]),$this->encodeHeader(trim($header[1])));}if(!$this->sign_key_file){$result.=$this->headerLine('MIME-Version','1.0');$result.=$this->getMailMIME();}return $result;}public function getMailMIME(){$result='';$ismultipart=true;switch($this->message_type){case 'inline':$result.=$this->headerLine('Content-Type',static::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',static::CONTENT_TYPE_MULTIPART_MIXED.';');$result.=$this->textLine(' boundary="'.$this->boundary[1].'"');break;case 'alt':case 'alt_inline':$result.=$this->headerLine('Content-Type',static::CONTENT_TYPE_MULTIPART_ALTERNATIVE.';');$result.=$this->textLine(' boundary="'.$this->boundary[1].'"');break;default:$result.=$this->textLine('Content-Type: '.$this->ContentType.'; charset='.$this->CharSet);$ismultipart=false;break;}if(static::ENCODING_7BIT!=$this->Encoding){if($ismultipart){if(static::ENCODING_8BIT==$this->Encoding){$result.=$this->headerLine('Content-Transfer-Encoding',static::ENCODING_8BIT);}}else{$result.=$this->headerLine('Content-Transfer-Encoding',$this->Encoding);}}if('mail'!=$this->Mailer){$result.=static::$LE;}return $result;}public function getSentMIMEMessage(){return rtrim($this->MIMEHeader.$this->mailHeader," ").static::$LE.static::$LE.$this->MIMEBody;}protected function generateId(){$len=32;if(function_exists('random_bytes')){$bytes=random_bytes($len);}elseif(function_exists('openssl_random_pseudo_bytes')){$bytes=openssl_random_pseudo_bytes($len);}else{$bytes=hash('sha256',uniqid((string)mt_rand(),true),true);}return str_replace(['=','+','/'],'',base64_encode(hash('sha256',$bytes,true)));}public function createBody(){$body='';$this->uniqueid=$this->generateId();$this->boundary[1]='b1_'.$this->uniqueid;$this->boundary[2]='b2_'.$this->uniqueid;$this->boundary[3]='b3_'.$this->uniqueid;if($this->sign_key_file){$body.=$this->getMailMIME().static::$LE;}$this->setWordWrap();$bodyEncoding=$this->Encoding;$bodyCharSet=$this->CharSet;if(static::ENCODING_8BIT==$bodyEncoding and!$this->has8bitChars($this->Body)){$bodyEncoding=static::ENCODING_7BIT;$bodyCharSet='us-ascii';}if(static::ENCODING_BASE64!=$this->Encoding and static::hasLineLongerThanMax($this->Body)){$bodyEncoding=static::ENCODING_QUOTED_PRINTABLE;}$altBodyEncoding=$this->Encoding;$altBodyCharSet=$this->CharSet;if(static::ENCODING_8BIT==$altBodyEncoding and!$this->has8bitChars($this->AltBody)){$altBodyEncoding=static::ENCODING_7BIT;$altBodyCharSet='us-ascii';}if(static::ENCODING_BASE64!=$altBodyEncoding and static::hasLineLongerThanMax($this->AltBody)){$altBodyEncoding=static::ENCODING_QUOTED_PRINTABLE;}$mimepre='This is a multi-part message in MIME format.'.static::$LE;switch($this->message_type){case 'inline':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$bodyCharSet,'',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=static::$LE;$body.=$this->attachAll('inline',$this->boundary[1]);break;case 'attach':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$bodyCharSet,'',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=static::$LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;case 'inline_attach':$body.=$mimepre;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type',static::CONTENT_TYPE_MULTIPART_RELATED.';');$body.=$this->textLine(' boundary="'.$this->boundary[2].'";');$body.=$this->textLine(' type="'.static::CONTENT_TYPE_TEXT_HTML.'"');$body.=static::$LE;$body.=$this->getBoundary($this->boundary[2],$bodyCharSet,'',$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=static::$LE;$body.=$this->attachAll('inline',$this->boundary[2]);$body.=static::$LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;case 'alt':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$altBodyCharSet,static::CONTENT_TYPE_PLAINTEXT,$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=static::$LE;$body.=$this->getBoundary($this->boundary[1],$bodyCharSet,static::CONTENT_TYPE_TEXT_HTML,$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=static::$LE;if(!empty($this->Ical)){$body.=$this->getBoundary($this->boundary[1],'',static::CONTENT_TYPE_TEXT_CALENDAR.'; method=REQUEST','');$body.=$this->encodeString($this->Ical,$this->Encoding);$body.=static::$LE;}$body.=$this->endBoundary($this->boundary[1]);break;case 'alt_inline':$body.=$mimepre;$body.=$this->getBoundary($this->boundary[1],$altBodyCharSet,static::CONTENT_TYPE_PLAINTEXT,$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=static::$LE;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type',static::CONTENT_TYPE_MULTIPART_RELATED.';');$body.=$this->textLine(' boundary="'.$this->boundary[2].'";');$body.=$this->textLine(' type="'.static::CONTENT_TYPE_TEXT_HTML.'"');$body.=static::$LE;$body.=$this->getBoundary($this->boundary[2],$bodyCharSet,static::CONTENT_TYPE_TEXT_HTML,$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=static::$LE;$body.=$this->attachAll('inline',$this->boundary[2]);$body.=static::$LE;$body.=$this->endBoundary($this->boundary[1]);break;case 'alt_attach':$body.=$mimepre;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type',static::CONTENT_TYPE_MULTIPART_ALTERNATIVE.';');$body.=$this->textLine(' boundary="'.$this->boundary[2].'"');$body.=static::$LE;$body.=$this->getBoundary($this->boundary[2],$altBodyCharSet,static::CONTENT_TYPE_PLAINTEXT,$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=static::$LE;$body.=$this->getBoundary($this->boundary[2],$bodyCharSet,static::CONTENT_TYPE_TEXT_HTML,$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=static::$LE;if(!empty($this->Ical)){$body.=$this->getBoundary($this->boundary[2],'',static::CONTENT_TYPE_TEXT_CALENDAR.'; method=REQUEST','');$body.=$this->encodeString($this->Ical,$this->Encoding);}$body.=$this->endBoundary($this->boundary[2]);$body.=static::$LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;case 'alt_inline_attach':$body.=$mimepre;$body.=$this->textLine('--'.$this->boundary[1]);$body.=$this->headerLine('Content-Type',static::CONTENT_TYPE_MULTIPART_ALTERNATIVE.';');$body.=$this->textLine(' boundary="'.$this->boundary[2].'"');$body.=static::$LE;$body.=$this->getBoundary($this->boundary[2],$altBodyCharSet,static::CONTENT_TYPE_PLAINTEXT,$altBodyEncoding);$body.=$this->encodeString($this->AltBody,$altBodyEncoding);$body.=static::$LE;$body.=$this->textLine('--'.$this->boundary[2]);$body.=$this->headerLine('Content-Type',static::CONTENT_TYPE_MULTIPART_RELATED.';');$body.=$this->textLine(' boundary="'.$this->boundary[3].'";');$body.=$this->textLine(' type="'.static::CONTENT_TYPE_TEXT_HTML.'"');$body.=static::$LE;$body.=$this->getBoundary($this->boundary[3],$bodyCharSet,static::CONTENT_TYPE_TEXT_HTML,$bodyEncoding);$body.=$this->encodeString($this->Body,$bodyEncoding);$body.=static::$LE;$body.=$this->attachAll('inline',$this->boundary[3]);$body.=static::$LE;$body.=$this->endBoundary($this->boundary[2]);$body.=static::$LE;$body.=$this->attachAll('attachment',$this->boundary[1]);break;default:$this->Encoding=$bodyEncoding;$body.=$this->encodeString($this->Body,$this->Encoding);break;}if($this->isError()){$body='';if($this->exceptions){throw new Exception($this->lang('empty_message'),self::STOP_CRITICAL);}}elseif($this->sign_key_file){try{if(!defined('PKCS7_TEXT')){throw new Exception($this->lang('extension_missing').'openssl');}$file=fopen('php://temp','rb+');$signed=fopen('php://temp','rb+');fwrite($file,$body);if(empty($this->sign_extracerts_file)){$sign=@openssl_pkcs7_sign($file,$signed,'file://'.realpath($this->sign_cert_file),['file://'.realpath($this->sign_key_file),$this->sign_key_pass],[]);}else{$sign=@openssl_pkcs7_sign($file,$signed,'file://'.realpath($this->sign_cert_file),['file://'.realpath($this->sign_key_file),$this->sign_key_pass],[],PKCS7_DETACHED,$this->sign_extracerts_file);}fclose($file);if($sign){$body=file_get_contents($signed);fclose($signed);$parts=explode(" ",$body,2);$this->MIMEHeader.=$parts[0].static::$LE.static::$LE;$body=$parts[1];}else{fclose($signed);throw new Exception($this->lang('signing').openssl_error_string());}}catch(Exception $exc){$body='';if($this->exceptions){throw $exc;}}}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.=static::$LE;if(static::ENCODING_7BIT!=$encoding){$result.=$this->headerLine('Content-Transfer-Encoding',$encoding);}$result.=static::$LE;return $result;}protected function endBoundary($boundary){return static::$LE.'--'.$boundary.'--'.static::$LE;}protected function setMessageType(){$type=[];if($this->alternativeExists()){$type[]='alt';}if($this->inlineImageExists()){$type[]='inline';}if($this->attachmentExists()){$type[]='attach';}$this->message_type=implode('_',$type);if(''==$this->message_type){$this->message_type='plain';}}public function headerLine($name,$value){return $name.': '.$value.static::$LE;}public function textLine($value){return $value.static::$LE;}public function addAttachment($path,$name='',$encoding=self::ENCODING_BASE64,$type='',$disposition='attachment'){try{if(!static::isPermittedPath($path)||!@is_file($path)){throw new Exception($this->lang('file_access').$path,self::STOP_CONTINUE);}if(''==$type){$type=static::filenameToType($path);}$filename=static::mb_pathinfo($path,PATHINFO_BASENAME);if(''==$name){$name=$filename;}if(!$this->validateEncoding($encoding)){throw new Exception($this->lang('encoding').$encoding);}$this->attachment[]=[0=>$path,1=>$filename,2=>$name,3=>$encoding,4=>$type,5=>false,6=>$disposition,7=>$name,];}catch(Exception $exc){$this->setError($exc->getMessage());$this->edebug($exc->getMessage());if($this->exceptions){throw $exc;}return false;}return true;}public function getAttachments(){return $this->attachment;}protected function attachAll($disposition_type,$boundary){$mime=[];$cidUniq=[];$incl=[];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=hash('sha256',serialize($attachment));if(in_array($inclhash,$incl)){continue;}$incl[]=$inclhash;$name=$attachment[2];$encoding=$attachment[3];$type=$attachment[4];$disposition=$attachment[6];$cid=$attachment[7];if('inline'==$disposition and array_key_exists($cid,$cidUniq)){continue;}$cidUniq[$cid]=true;$mime[]=sprintf('--%s%s',$boundary,static::$LE);if(!empty($name)){$mime[]=sprintf('Content-Type: %s; name="%s"%s',$type,$this->encodeHeader($this->secureHeader($name)),static::$LE);}else{$mime[]=sprintf('Content-Type: %s%s',$type,static::$LE);}if(static::ENCODING_7BIT!=$encoding){$mime[]=sprintf('Content-Transfer-Encoding: %s%s',$encoding,static::$LE);}if(!empty($cid)){$mime[]=sprintf('Content-ID: <%s>%s',$this->encodeHeader($this->secureHeader($cid)),static::$LE);}if(!empty($disposition)){$encoded_name=$this->encodeHeader($this->secureHeader($name));if(preg_match('/[ ()<>@,;:\"/[]?=]/',$encoded_name)){$mime[]=sprintf('Content-Disposition: %s; filename="%s"%s',$disposition,$encoded_name,static::$LE.static::$LE);}else{if(!empty($encoded_name)){$mime[]=sprintf('Content-Disposition: %s; filename=%s%s',$disposition,$encoded_name,static::$LE.static::$LE);}else{$mime[]=sprintf('Content-Disposition: %s%s',$disposition,static::$LE.static::$LE);}}}else{$mime[]=static::$LE;}if($bString){$mime[]=$this->encodeString($string,$encoding);}else{$mime[]=$this->encodeFile($path,$encoding);}if($this->isError()){return '';}$mime[]=static::$LE;}}$mime[]=sprintf('--%s--%s',$boundary,static::$LE);return implode('',$mime);}protected function encodeFile($path,$encoding=self::ENCODING_BASE64){try{if(!static::isPermittedPath($path)||!file_exists($path)){throw new Exception($this->lang('file_open').$path,self::STOP_CONTINUE);}$file_buffer=file_get_contents($path);if(false===$file_buffer){throw new Exception($this->lang('file_open').$path,self::STOP_CONTINUE);}$file_buffer=$this->encodeString($file_buffer,$encoding);return $file_buffer;}catch(Exception $exc){$this->setError($exc->getMessage());return '';}}public function encodeString($str,$encoding=self::ENCODING_BASE64){$encoded='';switch(strtolower($encoding)){case static::ENCODING_BASE64:$encoded=chunk_split(base64_encode($str),static::STD_LINE_LENGTH,static::$LE);break;case static::ENCODING_7BIT:case static::ENCODING_8BIT:$encoded=static::normalizeBreaks($str);if(substr($encoded,-(strlen(static::$LE)))!=static::$LE){$encoded.=static::$LE;}break;case static::ENCODING_BINARY:$encoded=$str;break;case static::ENCODING_QUOTED_PRINTABLE:$encoded=$this->encodeQP($str);break;default:$this->setError($this->lang('encoding').$encoding);if($this->exceptions){throw new Exception($this->lang('encoding').$encoding);}break;}return $encoded;}public function encodeHeader($str,$position='text'){$matchcount=0;switch(strtolower($position)){case 'phrase':if(!preg_match('/[200-377]/',$str)){$encoded=addcslashes($str,"..37177\"");if(($str==$encoded)and!preg_match('/[^A-Za-z0-9!#$%&'*+/=?^_`{|}~ -]/',$str)){return $encoded;}return ""$encoded"";}$matchcount=preg_match_all('/[^404143-133135-176]/',$str,$matches);break;case 'comment':$matchcount=preg_match_all('/[()"]/',$str,$matches);case 'text':default:$matchcount += preg_match_all('/[00-10131416-37177-377]/',$str,$matches);break;}$lengthsub='mail'==$this->Mailer?13:0;$maxlen=static::STD_LINE_LENGTH-$lengthsub;if($matchcount>strlen($str)/3){$encoding='B';$maxlen=static::STD_LINE_LENGTH-$lengthsub-8-strlen($this->CharSet);if($this->hasMultiBytes($str)){$encoded=$this->base64EncodeWrapMB($str," ");}else{$encoded=base64_encode($str);$maxlen -= $maxlen % 4;$encoded=trim(chunk_split($encoded,$maxlen," "));}$encoded=preg_replace('/^(.*)$/m',' =?'.$this->CharSet."?$encoding?\1?=",$encoded);}elseif($matchcount>0){$encoding='Q';$maxlen=static::STD_LINE_LENGTH-$lengthsub-8-strlen($this->CharSet);$encoded=$this->encodeQ($str,$position);$encoded=$this->wrapText($encoded,$maxlen,true);$encoded=str_replace('='.static::$LE," ",trim($encoded));$encoded=preg_replace('/^(.*)$/m',' =?'.$this->CharSet."?$encoding?\1?=",$encoded);}elseif(strlen($str)>$maxlen){$encoded=trim($this->wrapText($str,$maxlen,false));if($str==$encoded){$encoded=trim(chunk_split($str,static::STD_LINE_LENGTH,static::$LE));}$encoded=str_replace(static::$LE," ",trim($encoded));$encoded=preg_replace('/^(.*)$/m',' \1',$encoded);}else{return $str;}return trim(static::normalizeBreaks($encoded));}public function hasMultiBytes($str){if(function_exists('mb_strlen')){return strlen($str)>mb_strlen($str,$this->CharSet);}return false;}public function has8bitChars($text){return (bool) preg_match('/[x80-xFF]/',$text);}public function base64EncodeWrapMB($str,$linebreak=null){$start='=?'.$this->CharSet.'?B?';$end='?=';$encoded='';if(null===$linebreak){$linebreak=static::$LE;}$mb_length=mb_strlen($str,$this->CharSet);$length=75-strlen($start)-strlen($end);$ratio=$mb_length/strlen($str);$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.$linebreak;}return substr($encoded,0,-strlen($linebreak));}public function encodeQP($string){return static::normalizeBreaks(quoted_printable_encode($string));}public function encodeQ($str,$position='text'){$pattern='';$encoded=str_replace([" "," "],'',$str);switch(strtolower($position)){case 'phrase':$pattern='^A-Za-z0-9!*+/ -';break;case 'comment':$pattern='()"';case 'text':default:$pattern='00-11131416-377577137177-377'.$pattern;break;}$matches=[];if(preg_match_all("/[{$pattern}]/",$encoded,$matches)){$eqkey=array_search('=',$matches[0]);if(false!==$eqkey){unset($matches[0][$eqkey]);array_unshift($matches[0],'=');}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=self::ENCODING_BASE64,$type='',$disposition='attachment'){try{if(''==$type){$type=static::filenameToType($filename);}if(!$this->validateEncoding($encoding)){throw new Exception($this->lang('encoding').$encoding);}$this->attachment[]=[0=>$string,1=>$filename,2=>static::mb_pathinfo($filename,PATHINFO_BASENAME),3=>$encoding,4=>$type,5=>true,6=>$disposition,7=>0,];}catch(Exception $exc){$this->setError($exc->getMessage());$this->edebug($exc->getMessage());if($this->exceptions){throw $exc;}return false;}return true;}public function addEmbeddedImage($path,$cid,$name='',$encoding=self::ENCODING_BASE64,$type='',$disposition='inline'){try{if(!static::isPermittedPath($path)||!@is_file($path)){throw new Exception($this->lang('file_access').$path,self::STOP_CONTINUE);}if(''==$type){$type=static::filenameToType($path);}if(!$this->validateEncoding($encoding)){throw new Exception($this->lang('encoding').$encoding);}$filename=static::mb_pathinfo($path,PATHINFO_BASENAME);if(''==$name){$name=$filename;}$this->attachment[]=[0=>$path,1=>$filename,2=>$name,3=>$encoding,4=>$type,5=>false,6=>$disposition,7=>$cid,];}catch(Exception $exc){$this->setError($exc->getMessage());$this->edebug($exc->getMessage());if($this->exceptions){throw $exc;}return false;}return true;}public function addStringEmbeddedImage($string,$cid,$name='',$encoding=self::ENCODING_BASE64,$type='',$disposition='inline'){try{if(''==$type and!empty($name)){$type=static::filenameToType($name);}if(!$this->validateEncoding($encoding)){throw new Exception($this->lang('encoding').$encoding);}$this->attachment[]=[0=>$string,1=>$name,2=>$name,3=>$encoding,4=>$type,5=>true,6=>$disposition,7=>$cid,];}catch(Exception $exc){$this->setError($exc->getMessage());$this->edebug($exc->getMessage());if($this->exceptions){throw $exc;}return false;}return true;}protected function validateEncoding($encoding){return in_array($encoding,[self::ENCODING_7BIT,self::ENCODING_QUOTED_PRINTABLE,self::ENCODING_BASE64,self::ENCODING_8BIT,self::ENCODING_BINARY,],true);}protected function cidExists($cid){foreach($this->attachment as $attachment){if('inline'==$attachment[6]and $cid==$attachment[7]){return true;}}return false;}public function inlineImageExists(){foreach($this->attachment as $attachment){if('inline'==$attachment[6]){return true;}}return false;}public function attachmentExists(){foreach($this->attachment as $attachment){if('attachment'==$attachment[6]){return true;}}return false;}public function alternativeExists(){return!empty($this->AltBody);}public function clearQueuedAddresses($kind){$this->RecipientsQueue=array_filter($this->RecipientsQueue,function($params)use($kind){return $params[0]!=$kind;});}public function clearAddresses(){foreach($this->to as $to){unset($this->all_recipients[strtolower($to[0])]);}$this->to=[];$this->clearQueuedAddresses('to');}public function clearCCs(){foreach($this->cc as $cc){unset($this->all_recipients[strtolower($cc[0])]);}$this->cc=[];$this->clearQueuedAddresses('cc');}public function clearBCCs(){foreach($this->bcc as $bcc){unset($this->all_recipients[strtolower($bcc[0])]);}$this->bcc=[];$this->clearQueuedAddresses('bcc');}public function clearReplyTos(){$this->ReplyTo=[];$this->ReplyToQueue=[];}public function clearAllRecipients(){$this->to=[];$this->cc=[];$this->bcc=[];$this->all_recipients=[];$this->RecipientsQueue=[];}public function clearAttachments(){$this->attachment=[];}public function clearCustomHeaders(){$this->CustomHeader=[];}protected function setError($msg){++$this->error_count;if('smtp'==$this->Mailer and null!==$this->smtp){$lasterror=$this->smtp->getError();if(!empty($lasterror['error'])){$msg.=$this->lang('smtp_error').$lasterror['error'];if(!empty($lasterror['detail'])){$msg.=' Detail: '.$lasterror['detail'];}if(!empty($lasterror['smtp_code'])){$msg.=' SMTP code: '.$lasterror['smtp_code'];}if(!empty($lasterror['smtp_code_ex'])){$msg.=' Additional SMTP info: '.$lasterror['smtp_code_ex'];}}}$this->ErrorInfo=$msg;}public static function rfcDate(){date_default_timezone_set(@date_default_timezone_get());return date('D, j M Y H:i:s O');}protected function serverHostname(){$result='';if(!empty($this->Hostname)){$result=$this->Hostname;}elseif(isset($_SERVER)and array_key_exists('SERVER_NAME',$_SERVER)){$result=$_SERVER['SERVER_NAME'];}elseif(function_exists('gethostname')and gethostname()!==false){$result=gethostname();}elseif(php_uname('n')!==false){$result=php_uname('n');}if(!static::isValidHost($result)){return 'localhost.localdomain';}return $result;}public static function isValidHost($host){if(empty($host)or!is_string($host)or strlen($host)>256){return false;}if(trim($host,'[]')!=$host){return (bool) filter_var(trim($host,'[]'),FILTER_VALIDATE_IP,FILTER_FLAG_IPV6);}if(is_numeric(str_replace('.','',$host))){return (bool) filter_var($host,FILTER_VALIDATE_IP,FILTER_FLAG_IPV4);}if(filter_var('http://'.$host,FILTER_VALIDATE_URL)){return true;}return false;}protected function lang($key){if(count($this->language)<1){$this->setLanguage('en');}if(array_key_exists($key,$this->language)){if('smtp_connect_failed'==$key){return $this->language[$key].' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting';}return $this->language[$key];}return $key;}public function isError(){return $this->error_count>0;}public function addCustomHeader($name,$value=null){if(null===$value){$this->CustomHeader[]=explode(':',$name,2);}else{$this->CustomHeader[]=[$name,$value];}}public function getCustomHeaders(){return $this->CustomHeader;}public function msgHTML($message,$basedir='',$advanced=false){preg_match_all('/(src|background)=["'](.*)["']/Ui',$message,$images);if(array_key_exists(2,$images)){if(strlen($basedir)>1&&'/'!=substr($basedir,-1)){$basedir.='/';}foreach($images[2]as $imgindex=>$url){if(preg_match('#^data:(image/(?:jpe?g|gif|png));?(base64)?,(.+)#',$url,$match)){if(count($match)==4 and static::ENCODING_BASE64==$match[2]){$data=base64_decode($match[3]);}elseif(''==$match[2]){$data=rawurldecode($match[3]);}else{continue;}$cid=hash('sha256',$data).'@phpmailer.0';if(!$this->cidExists($cid)){$this->addStringEmbeddedImage($data,$cid,'embed'.$imgindex,static::ENCODING_BASE64,$match[1]);}$message=str_replace($images[0][$imgindex],$images[1][$imgindex].'="cid:'.$cid.'"',$message);continue;}if(!empty($basedir)and(strpos($url,'..')===false)and 0!==strpos($url,'cid:')and!preg_match('#^[a-z][a-z0-9+.-]*:?//#i',$url)){$filename=static::mb_pathinfo($url,PATHINFO_BASENAME);$directory=dirname($url);if('.'==$directory){$directory='';}$cid=hash('sha256',$url).'@phpmailer.0';if(strlen($basedir)>1 and '/'!=substr($basedir,-1)){$basedir.='/';}if(strlen($directory)>1 and '/'!=substr($directory,-1)){$directory.='/';}if($this->addEmbeddedImage($basedir.$directory.$filename,$cid,$filename,static::ENCODING_BASE64,static::_mime_types((string)static::mb_pathinfo($filename,PATHINFO_EXTENSION)))){$message=preg_replace('/'.$images[1][$imgindex].'=["']'.preg_quote($url,'/').'["']/Ui',$images[1][$imgindex].'="cid:'.$cid.'"',$message);}}}}$this->isHTML(true);$this->Body=static::normalizeBreaks($message);$this->AltBody=static::normalizeBreaks($this->html2text($message,$advanced));if(!$this->alternativeExists()){$this->AltBody='This is an HTML-only message. To view it, activate HTML in your email application.'.static::$LE;}return $this->Body;}public function html2text($html,$advanced=false){if(is_callable($advanced)){return call_user_func($advanced,$html);}return html_entity_decode(trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?/si','',$html))),ENT_QUOTES,$this->CharSet);}public static function _mime_types($ext=''){$mimes=['xl'=>'application/excel','js'=>'application/javascript','hqx'=>'application/mac-binhex40','cpt'=>'application/mac-compactpro','bin'=>'application/macbinary','doc'=>'application/msword','word'=>'application/msword','xlsx'=>'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','xltx'=>'application/vnd.openxmlformats-officedocument.spreadsheetml.template','potx'=>'application/vnd.openxmlformats-officedocument.presentationml.template','ppsx'=>'application/vnd.openxmlformats-officedocument.presentationml.slideshow','pptx'=>'application/vnd.openxmlformats-officedocument.presentationml.presentation','sldx'=>'application/vnd.openxmlformats-officedocument.presentationml.slide','docx'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.document','dotx'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.template','xlam'=>'application/vnd.ms-excel.addin.macroEnabled.12','xlsb'=>'application/vnd.ms-excel.sheet.binary.macroEnabled.12','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','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','m4a'=>'audio/mp4','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','mka'=>'audio/x-matroska','bmp'=>'image/bmp','gif'=>'image/gif','jpeg'=>'image/jpeg','jpe'=>'image/jpeg','jpg'=>'image/jpeg','png'=>'image/png','tiff'=>'image/tiff','tif'=>'image/tiff','webp'=>'image/webp','heif'=>'image/heif','heifs'=>'image/heif-sequence','heic'=>'image/heic','heics'=>'image/heic-sequence','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','vcf'=>'text/vcard','vcard'=>'text/vcard','ics'=>'text/calendar','xml'=>'text/xml','xsl'=>'text/xml','wmv'=>'video/x-ms-wmv','mpeg'=>'video/mpeg','mpe'=>'video/mpeg','mpg'=>'video/mpeg','mp4'=>'video/mp4','m4v'=>'video/mp4','mov'=>'video/quicktime','qt'=>'video/quicktime','rv'=>'video/vnd.rn-realvideo','avi'=>'video/x-msvideo','movie'=>'video/x-sgi-movie','webm'=>'video/webm','mkv'=>'video/x-matroska',];$ext=strtolower($ext);if(array_key_exists($ext,$mimes)){return $mimes[$ext];}return 'application/octet-stream';}public static function filenameToType($filename){$qpos=strpos($filename,'?');if(false!==$qpos){$filename=substr($filename,0,$qpos);}$ext=static::mb_pathinfo($filename,PATHINFO_EXTENSION);return static::_mime_types($ext);}public static function mb_pathinfo($path,$options=null){$ret=['dirname'=>'','basename'=>'','extension'=>'','filename'=>''];$pathinfo=[];if(preg_match('#^(.*?)[\\/]*(([^/\\]*?)(.([^.\\/]+?)|))[\\/.]*$#m',$path,$pathinfo)){if(array_key_exists(1,$pathinfo)){$ret['dirname']=$pathinfo[1];}if(array_key_exists(2,$pathinfo)){$ret['basename']=$pathinfo[2];}if(array_key_exists(5,$pathinfo)" class="fancybox" rel="gallery1">