<?php namespace Event; use Model\emailSql; use Model\folderSql; use Model\listsSql; use Swlib\Saber; use Swlib\SaberGM; /** * 黑名单 * @author:dc * @time 2024/9/30 17:16 * Class MailBlack * @package Event */ class MailBlack { /** * @var \Lib\Db|\Lib\DbPool */ private $db; private $blacklist = []; private $blackFolder = ''; private $data; public function __construct($id,$data) { $data['id'] = $id; $this->data = $data; // 读取黑名单 $this->blacklist = redis()->get('blacklist:'.$data['email_id']); if($this->blacklist){ $this->blackFolder = $this->db->cache(3600)->value(folderSql::originFolder($data['email_id'],'垃圾箱')); } $this->check(); } protected function check(){ // 验证是否存在黑名单中 if($this->blacklist && $this->blackFolder != $folder){ // 邮箱是否在黑名单中 $isBlacklist = false; if (!empty($blacklist['emails']) && is_array($blacklist['emails']) && in_array($this->data['from'],$blacklist['emails'])){ $isBlacklist = true; } // 域是否存在 if (!empty($blacklist['domain']) && is_array($blacklist['domain']) && in_array(explode('@',$this->data['from'])[1],$blacklist['domain'])){ $isBlacklist = true; } if($isBlacklist && $this->blackFolder){ // 移入垃圾箱 $this->client->move([$this->data['uid']],$this->blackFolder); } } } }