正在显示
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 | } |
-
请 注册 或 登录 后发表评论