作者 邓超

自动回复标记

正在显示 1 个修改的文件 包含 44 行增加36 行删除
@@ -472,55 +472,63 @@ function folder2int($folder):int { @@ -472,55 +472,63 @@ function folder2int($folder):int {
472 * @author:dc 472 * @author:dc
473 * @time 2025/6/11 10:49 473 * @time 2025/6/11 10:49
474 */ 474 */
475 -function isAiAutoMail($from,$subject,$body=''){ 475 +function isAiAutoMail($from,$subject,$body='',$return_keyword=false){
476 // 读取fob设置的过滤词 476 // 读取fob设置的过滤词
477 - $temp = function ($re = false){  
478 - $filter = redis()->get('ai_email_filter_lists',[]);  
479 - $filter = is_array($filter) ? $filter : [];  
480 - if($filter && !$re){  
481 - return $filter;  
482 - }  
483 - $redisfilter = $filter; 477 + $temp = function ($type = 0){
  478 + $type = $type?1:0; // 是否白名单
484 479
485 - $filter = @file_get_contents('https://fob.ai.cc/api/mail/ai_inbox_filter/'.md5('aicc.'.date('ymdh')));  
486 - $filter = @json_decode($filter,true);  
487 - if(!is_array($filter)){  
488 - if($redisfilter){  
489 - return $redisfilter; 480 + $filter = redis()->get('fob:ai_email_filter_lists'.$type,[]);
  481 + $filter = is_array($filter) ? $filter : [];
  482 + if(!$filter){
  483 + try {
  484 + $filter = fob_mysql()->throw()->all('select `type`,`text` from `email_filter_rule` where `is_white` = '.$type);
  485 + }catch (Throwable $e){
  486 + $filter = redis()->get('fob:ai_email_filter_lists_a'.$type,[]);
490 } 487 }
491 - return [];  
492 - }  
493 - $filters = [];  
494 - array_map(function ($v) use (&$filters){  
495 - $filters[] = [  
496 - $v['type'],  
497 - $v['text'],  
498 - ];  
499 - },$filter[0]);  
500 -  
501 - if($filters){  
502 - redis()->set('ai_email_filter_lists',$filters,86400); 488 + // 7天过期的
  489 + redis()->set('fob:ai_email_filter_lists_a'.$type,$filter,86400*7);
  490 +
  491 + $filters = [];
  492 + array_map(function ($v) use (&$filters){
  493 + $filters[] = [$v['type'], $v['text'],];
  494 + },$filter);
  495 + if($filters){
  496 + // 5分钟过期的
  497 + redis()->set('fob:ai_email_filter_lists'.$type,$filters,300);
  498 + }
  499 + return $filters;
  500 + }else{
  501 + return $filter;
503 } 502 }
504 - return $filters;  
505 }; 503 };
506 504
507 // 是否是更新索引 505 // 是否是更新索引
508 if($from===true&&$subject===true) { 506 if($from===true&&$subject===true) {
509 - return $temp(true); 507 + return $temp();
510 } 508 }
  509 + $haystacks = [
  510 + 1 => $from,
  511 + 2 => $subject,
  512 + 3 => $body,
  513 + ];
511 514
512 - // 是否是自动回复  
513 - foreach ($temp() as $f){ 515 + // 是否在白名单
  516 + foreach ($temp(1) as $f){
514 list($t,$str) = $f; 517 list($t,$str) = $f;
515 - $haystack = '';  
516 - if($t==2){  
517 - $haystack = $subject;  
518 - }elseif ($t==1){  
519 - $haystack = $from;  
520 - }elseif ($t==3&&$body){  
521 - $haystack = $body; 518 + $haystack = $haystacks[$t]??'';
  519 + if($haystack && $str && stripos($haystack,$str)!==false){
  520 + return 0;
522 } 521 }
  522 + }
  523 +
  524 + // 是否在黑名单中
  525 + foreach ($temp() as $f){
  526 + list($t,$str) = $f;
  527 + $haystack = $haystacks[$t]??'';
523 if($haystack && $str && stripos($haystack,$str)!==false){ 528 if($haystack && $str && stripos($haystack,$str)!==false){
  529 + if($return_keyword){
  530 + return $str;
  531 + }
524 return 1; 532 return 1;
525 } 533 }
526 } 534 }