| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- <?php
- $host = (isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'www.ss5.xyz';
- define("SITE_URL", "https://".$host);
- /**
- * 浏览器友好的变量输出
- *
- * @param mixed $var
- * 变量
- * @param boolean $echo
- * 是否输出 默认为True 如果为false 则返回输出字符串
- * @param string $label
- * 标签 默认为空
- * @param boolean $strict
- * 是否严谨 默认为true
- * @return void string
- */
- function dump($var, $echo = true, $label = null, $strict = true)
- {
- $label = ($label === null) ? '' : rtrim($label) . ' ';
- if (!$strict) {
- if (ini_get('html_errors')) {
- $output = print_r($var, true);
- $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>';
- } 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 = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>';
- }
- }
- if ($echo) {
- echo($output);
- return null;
- } else
- return $output;
- }
- function JsMessage($message, $URL = 'HISTORY', $charset = 'utf-8')
- {
- echo '
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=' . $charset . '" />
- <title>系统提示</title>
- </head>
- <body>
- <script type="text/javascript">
- alert("' . $message . '");
- ' . (strtoupper($URL) == 'HISTORY' ? 'history.back();' : 'location.href="' . $URL . '";') . '
- </script>
- </body>
- </html>
- ';
- 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);
- }
- ?>
|