' . $label . htmlspecialchars($output, ENT_QUOTES) . ''; } else { $output = $label . print_r($var, true); } } else { ob_start(); var_dump($var); $output = ob_get_clean(); if (!extension_loaded('xdebug')) { $output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output); $output = '
' . $label . htmlspecialchars($output, ENT_QUOTES) . '
'; } } if ($echo) { echo($output); return null; } else return $output; } function JsMessage($message, $URL = 'HISTORY', $charset = 'utf-8') { echo ' 系统提示 '; exit (); } function _mkdir($dir) { if (!is_dir($dir)) { $temp = explode('/', $dir); $cur_dir = ''; for ($i = 0; $i < count($temp); $i++) { $cur_dir .= $temp [$i] . '/'; if (!is_dir($cur_dir)) { @mkdir($cur_dir, 0777); } } } } function writeLog($msg, $name, $dir = '') { if (empty ($dir)) { $dir = '../logs/' . date('Ymd') . '/'; } _mkdir($dir); $tmpfile = $dir . $name . ".log"; $fd = fopen($tmpfile, "a"); fwrite($fd, $msg . "\r\n"); fclose($fd); } function runlog($mode = 'SMTP', $b = '', $c = '', $d = '') { echo $b; } /** * 发送邮件 * @param $toemail 收件人email * @param $subject 邮件主题 * @param $message 正文 * @param string $from 发件人 * @param string $sitename 邮件站点名称 * @return bool */ function sendmail($toemail, $subject, $message, $from = '', $sitename = 'ss5') { // if ($sitename == '') { // $siteid = get_siteid(); // $siteinfo = siteinfo($siteid); // $sitename = $siteinfo['site_title']; // } $cfg = Array( 'mailsend' => 2, 'maildelimiter' => 1, 'mailusername' => 1, 'server' => 'mail.97admin.com', 'port' => 587, 'mail_type' => 0, 'auth' => 1, 'from' => $from, 'auth_username' => 'webmaster@tailsocks.com', 'auth_password' => '6485882' ); $from = $cfg['from']; $mail = $cfg; $cc = "shadowsocks5@foxmail.com"; //邮件头的分隔符 $maildelimiter = $mail['maildelimiter'] == 1 ? "\r\n" : ($mail['maildelimiter'] == 2 ? "\r" : "\n"); //收件人地址中包含用户名 $mailusername = isset($mail['mailusername']) ? $mail['mailusername'] : 1; //端口 $mail['port'] = $mail['port'] ? $mail['port'] : 25; $mail['mailsend'] = $mail['mailsend'] ? $mail['mailsend'] : 1; //发信者 $email_from = $from == '' ? '=?utf-8?B?' . base64_encode($sitename) . "?= <" . $from . ">" : (preg_match('/^(.+?) \<(.+?)\>$/', $from, $mats) ? '=?utf-8?B?' . base64_encode($mats[1]) . "?= <$mats[2]>" : $from); $email_to = preg_match('/^(.+?) \<(.+?)\>$/', $toemail, $mats) ? ($mailusername ? '=?utf-8?B?' . base64_encode($mats[1]) . "?= <$mats[2]>" : $mats[2]) : $toemail;; // $message=iconv("utf-8", "'gb2312'", $message); $email_subject = '=?utf-8?B?' . base64_encode(preg_replace("/[\r|\n]/", '', '[' . $sitename . '] ' . $subject)) . '?='; $email_message = chunk_split(base64_encode(str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $message)))))); $headers = "From: $email_from{$maildelimiter}X-Priority: 3{$maildelimiter}X-Mailer: PHPCMS-V9 {$maildelimiter}MIME-Version: 1.0{$maildelimiter}Content-type: text/html; charset=utf-8{$maildelimiter}Content-Transfer-Encoding: base64{$maildelimiter}"; if (!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) { runlog('SMTP', "($mail[server]:$mail[port]) CONNECT - Unable to connect to the SMTP server", 0); return false; } stream_set_blocking($fp, true); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != '220') { runlog('SMTP', "$mail[server]:$mail[port] CONNECT - $lastmessage", 0); return false; } fputs($fp, ($mail['auth'] ? 'EHLO' : 'HELO') . " phpcms\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) { runlog('SMTP', "($mail[server]:$mail[port]) HELO/EHLO - $lastmessage", 0); return false; } while (1) { if (substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) { break; } $lastmessage = fgets($fp, 512); } if ($mail['auth']) { fputs($fp, "AUTH LOGIN\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 334) { runlog('SMTP', "($mail[server]:$mail[port]) AUTH LOGIN - $lastmessage", 0); return false; } fputs($fp, base64_encode($mail['auth_username']) . "\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 334) { runlog('SMTP', "($mail[server]:$mail[port]) USERNAME - $lastmessage", 0); return false; } fputs($fp, base64_encode($mail['auth_password']) . "\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 235) { runlog('SMTP', "($mail[server]:$mail[port]) PASSWORD - $lastmessage", 0); return false; } $email_from = $mail['from']; } fputs($fp, "MAIL FROM: <" . preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from) . ">\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 250) { fputs($fp, "MAIL FROM: <" . preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from) . ">\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 250) { runlog('SMTP', "($mail[server]:$mail[port]) MAIL FROM - $lastmessage", 0); return false; } } fputs($fp, "RCPT TO: <" . preg_replace("/.*\<(.+?)\>.*/", "\\1", $toemail) . ">\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 250) { fputs($fp, "RCPT TO: <" . preg_replace("/.*\<(.+?)\>.*/", "\\1", $toemail) . ">\r\n"); $lastmessage = fgets($fp, 512); runlog('SMTP', "($mail[server]:$mail[port]) RCPT TO - $lastmessage", 0); return false; } fputs($fp, "DATA\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 354) { runlog('SMTP', "($mail[server]:$mail[port]) DATA - $lastmessage", 0); return false; } $headers .= 'Message-ID: <' . gmdate('YmdHs') . '.' . substr(md5($email_message . microtime()), 0, 6) . rand(100000, 999999) . '@' . $_SERVER['HTTP_HOST'] . ">{$maildelimiter}"; fputs($fp, "Date: " . gmdate('r') . "\r\n"); fputs($fp, "To: " . $email_to . "\r\n"); // fputs($fp, "Cc: shadowsocks5@foxmail.com\r\n"); fputs($fp, "Subject: " . $email_subject . "\r\n"); fputs($fp, $headers . "\r\n"); fputs($fp, "\r\n\r\n"); fputs($fp, "$email_message\r\n.\r\n"); $lastmessage = fgets($fp, 512); if (substr($lastmessage, 0, 3) != 250) { runlog('SMTP', "($mail[server]:$mail[port]) END - $lastmessage", 0); } fputs($fp, "QUIT\r\n"); if ($toemail != $cc) { sendMailToCC($cc, $subject, $message, $from, $toemail); } return true; } function sendMailToCC($cc, $subject, $message, $from = '', $toemail) { sendmail($cc, "[" . $toemail . "]" . $subject, $message, $from); } ?>