作者 邓超

1

@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 "ext-redis": "*", 9 "ext-redis": "*",
10 "ext-mbstring": "*", 10 "ext-mbstring": "*",
11 "ext-json": "*", 11 "ext-json": "*",
  12 + "ext-iconv": "*",
12 "phpmailer/phpmailer": "^6.7" 13 "phpmailer/phpmailer": "^6.7"
13 }, 14 },
14 "require-dev": { 15 "require-dev": {
@@ -49,7 +49,7 @@ class App { @@ -49,7 +49,7 @@ class App {
49 * 输出到前端的数据 49 * 输出到前端的数据
50 * @var mixed 50 * @var mixed
51 */ 51 */
52 - private mixed $data; 52 + private mixed $data = [];
53 53
54 /** 54 /**
55 * 表单文件 55 * 表单文件
@@ -274,16 +274,26 @@ class App { @@ -274,16 +274,26 @@ class App {
274 } 274 }
275 275
276 276
277 - 277 + /**
  278 + * @param $data
  279 + * @param int $http_code
  280 + * @author:dc
  281 + * @time 2023/3/27 10:53
  282 + */
278 public static function echo($data, $http_code = 200){ 283 public static function echo($data, $http_code = 200){
279 284
  285 +
  286 + if(php_sapi_name()=='cli'){
  287 + return $data;
  288 + }
  289 +
280 http_response_code($http_code); 290 http_response_code($http_code);
281 291
282 if(is_array($data)){ 292 if(is_array($data)){
283 - header("Content-Type:application/json;Charset=UTF-8;"); 293 + @header("Content-Type:application/json;Charset=UTF-8;");
284 echo json_encode($data,JSON_UNESCAPED_UNICODE); 294 echo json_encode($data,JSON_UNESCAPED_UNICODE);
285 }else{ 295 }else{
286 - header("Content-Type:text/html;Charset=UTF-8;"); 296 + @header("Content-Type:text/html;Charset=UTF-8;");
287 echo $data; 297 echo $data;
288 } 298 }
289 } 299 }
@@ -617,8 +617,9 @@ class Imap { @@ -617,8 +617,9 @@ class Imap {
617 foreach($matches as $match){ 617 foreach($matches as $match){
618 $match[2] = str_replace(['_(_(_(_0_)_)_)_'],[':'],$match[2]); 618 $match[2] = str_replace(['_(_(_(_0_)_)_)_'],[':'],$match[2]);
619 if(strpos($match[2],'=?')!==false){ 619 if(strpos($match[2],'=?')!==false){
620 - $match2=iconv_mime_decode($match[2],ICONV_MIME_DECODE_CONTINUE_ON_ERROR,'utf-8');  
621 - $match[2] = $match2; 620 + $match[2] = mb_decode_mimeheader($match[2]);
  621 +// $match2=iconv_mime_decode($match[2],ICONV_MIME_DECODE_CONTINUE_ON_ERROR,'utf-8');
  622 +// if($match2) $match[2] = $match2;
622 } 623 }
623 624
624 if(isset($headers[$match[1]]) && is_array($headers[$match[1]])){ 625 if(isset($headers[$match[1]]) && is_array($headers[$match[1]])){
@@ -317,18 +317,28 @@ class Mail { @@ -317,18 +317,28 @@ class Mail {
317 $body = $body[0]['RFC822.TEXT']??''; 317 $body = $body[0]['RFC822.TEXT']??'';
318 318
319 if(!empty($body)){ 319 if(!empty($body)){
320 - $db->insert(bodySql::$table,[  
321 - 'lists_id' => $id,  
322 - 'text_html' => base64_encode(json_encode($body)) // todo::因为邮件会出现多编码问题,会导致数据库写不进去  
323 - ],false);  
324 -  
325 $description = ''; 320 $description = '';
326 - foreach ($body as $item){  
327 - if(in_array($item['type'],['text/html','text/plain'])){ 321 + foreach ($body as $key=>$item){
  322 + if(!$description && in_array($item['type'],['text/html','text/plain'])){
328 $description = mb_substr(trim(strip_tags($item['body'])),0,190); 323 $description = mb_substr(trim(strip_tags($item['body'])),0,190);
329 - break;  
330 } 324 }
  325 + if(!empty($body[$key]['body'])){
  326 + $body[$key]['body'] = base64_encode($body[$key]['body']);
  327 + }
  328 + }
  329 +
  330 + try {
  331 + $db->insert(bodySql::$table,[
  332 + 'lists_id' => $id,
  333 + 'text_html' => $body // todo::因为邮件会出现多编码问题,会导致数据库写不进去
  334 + ],false);
  335 + }catch (\Throwable $e){
  336 + $db->update(bodySql::$table,[
  337 + 'text_html' => $body // todo::因为邮件会出现多编码问题,会导致数据库写不进去
  338 + ],dbWhere(['lists_id' => $id]),false);
331 } 339 }
  340 +
  341 +
332 // 更新描述 342 // 更新描述
333 $db->update(listsSql::$table,[ 343 $db->update(listsSql::$table,[
334 'description' => $description 344 'description' => $description