正在显示
6 个修改的文件
包含
61 行增加
和
68 行删除
@@ -41,7 +41,26 @@ class AutoMail { | @@ -41,7 +41,26 @@ class AutoMail { | ||
41 | $not_must[] = ["match_phrase"=>["from.email"=>$str]]; | 41 | $not_must[] = ["match_phrase"=>["from.email"=>$str]]; |
42 | } | 42 | } |
43 | } | 43 | } |
44 | - | 44 | +echo json_encode([ |
45 | + "_source" => ["uuid"], | ||
46 | + "query"=>[ | ||
47 | + "bool"=>[ | ||
48 | + "must"=>[ | ||
49 | + ["term"=>["folder_as_int" => 1]], // 收件箱 | ||
50 | + ["term"=>["is_auto" => 0]], // 非auto | ||
51 | + ["term"=>["is_hots" => 0]], // 非预热 | ||
52 | + ["term"=>["deleted" => 0]], // 非删除 | ||
53 | + // 自动关键字 | ||
54 | + [ | ||
55 | + "bool" => [ | ||
56 | + "should"=> $not_must, | ||
57 | + "minimum_should_match" => 1 | ||
58 | + ] | ||
59 | + ] | ||
60 | + ] | ||
61 | + ] | ||
62 | + ] | ||
63 | + ]);exit; | ||
45 | // 查询自动回的邮件 | 64 | // 查询自动回的邮件 |
46 | $lists = $es->search([ | 65 | $lists = $es->search([ |
47 | "_source" => ["uuid"], | 66 | "_source" => ["uuid"], |
@@ -100,13 +100,15 @@ class SyncToEsCmd { | @@ -100,13 +100,15 @@ class SyncToEsCmd { | ||
100 | public function handler(){ | 100 | public function handler(){ |
101 | 101 | ||
102 | $es = es(); // 第一个库,即将丢弃 | 102 | $es = es(); // 第一个库,即将丢弃 |
103 | - $es2 = es('email_lists'); // 第二个库 新 | 103 | + $es2 = es('email_lists_copy'); // 第二个库 新 |
104 | 104 | ||
105 | while (!$this->isStop()){ | 105 | while (!$this->isStop()){ |
106 | 106 | ||
107 | $id = redis()->lPop('sync_to_es'); | 107 | $id = redis()->lPop('sync_to_es'); |
108 | $code = 500; | 108 | $code = 500; |
109 | if($id){ | 109 | if($id){ |
110 | + // redis()->rPush('sync_to_es2',$id); | ||
111 | + | ||
110 | $doc_id = ''; | 112 | $doc_id = ''; |
111 | try { | 113 | try { |
112 | $data = $this->db->throw()->first(\Model\listsSql::first('`id` = '.$id)); | 114 | $data = $this->db->throw()->first(\Model\listsSql::first('`id` = '.$id)); |
@@ -45,7 +45,7 @@ class SyncToEsCmd { | @@ -45,7 +45,7 @@ class SyncToEsCmd { | ||
45 | 45 | ||
46 | 46 | ||
47 | if(S_V2){ | 47 | if(S_V2){ |
48 | - $es = es('email_lists'); | 48 | + $es = es('email_lists_copy'); |
49 | }else{ | 49 | }else{ |
50 | $es = es(); | 50 | $es = es(); |
51 | } | 51 | } |
@@ -76,7 +76,10 @@ class SyncToEsCmd { | @@ -76,7 +76,10 @@ class SyncToEsCmd { | ||
76 | if($id){ | 76 | if($id){ |
77 | $doc_id = ''; | 77 | $doc_id = ''; |
78 | try { | 78 | try { |
79 | - $data = $db->throw()->first(\Model\listsSql::first('`id` = '.$id)); | 79 | + $data = $db->throw()->first('select * from `lists_hot` where `id` = '.$id); |
80 | + if(!$data){ | ||
81 | + $data = $db->throw()->first('select * from `lists` where `id` = '.$id); | ||
82 | + } | ||
80 | }catch (Throwable $e){ | 83 | }catch (Throwable $e){ |
81 | redis()->rPush('sync_to_es'.S_V2,$id); | 84 | redis()->rPush('sync_to_es'.S_V2,$id); |
82 | _echo('sync to es '.$e->getMessage()); | 85 | _echo('sync to es '.$e->getMessage()); |
@@ -89,7 +92,7 @@ class SyncToEsCmd { | @@ -89,7 +92,7 @@ class SyncToEsCmd { | ||
89 | continue; | 92 | continue; |
90 | } | 93 | } |
91 | // 设置 进程 是否在运行 | 94 | // 设置 进程 是否在运行 |
92 | - $data['is_auto']=$db->count('select count(*) from `lists_auto` where `list_id` = '.$data['id']) ? 1 : 0; | 95 | + $data['is_auto'] = $db->count('select count(*) from `lists_auto` where `list_id` = '.$data['id']) ? 1 : 0; |
93 | try { | 96 | try { |
94 | // 文件夹 | 97 | // 文件夹 |
95 | if(empty($this->folders[$data['folder_id']])){ | 98 | if(empty($this->folders[$data['folder_id']])){ |
@@ -137,7 +140,10 @@ class SyncToEsCmd { | @@ -137,7 +140,10 @@ class SyncToEsCmd { | ||
137 | @file_put_contents(LOG_PATH.'/sync_es_fail'.S_V2.'.log',$id."\n",FILE_APPEND); | 140 | @file_put_contents(LOG_PATH.'/sync_es_fail'.S_V2.'.log',$id."\n",FILE_APPEND); |
138 | _echo('同步es: '.$doc_id.'===>'.$code); | 141 | _echo('同步es: '.$doc_id.'===>'.$code); |
139 | } | 142 | } |
140 | - | 143 | + // _echo('同步es: '.$doc_id.'===>'.$code); |
144 | + // print_r($data); | ||
145 | + // var_dump($id); | ||
146 | + // exit; | ||
141 | }else{ | 147 | }else{ |
142 | sleep(1); | 148 | sleep(1); |
143 | } | 149 | } |
@@ -13,9 +13,11 @@ use Model\listsSql; | @@ -13,9 +13,11 @@ use Model\listsSql; | ||
13 | * @package Controller | 13 | * @package Controller |
14 | */ | 14 | */ |
15 | class Test { | 15 | class Test { |
16 | + public function home(){ | ||
17 | + return 404; | ||
18 | + } | ||
16 | 19 | ||
17 | - | ||
18 | - public function home(){ | 20 | + public function a(){ |
19 | 21 | ||
20 | return 404; | 22 | return 404; |
21 | 23 | ||
@@ -67,19 +69,20 @@ return 404; | @@ -67,19 +69,20 @@ return 404; | ||
67 | // app()->e(404,404); | 69 | // app()->e(404,404); |
68 | // } | 70 | // } |
69 | // | 71 | // |
70 | -//// $email = db()->first(emailSql::first(app()->request('mid'))); | 72 | + $email = db()->first(emailSql::first(app()->request('mid'))); |
71 | // | 73 | // |
72 | -// $config = (new \Lib\Imap\ImapConfig()) | ||
73 | -// ->setEmail('CService001@spicay-meart.com') | ||
74 | -// ->setPassword('5YmS77JBb7JJwuaD') | ||
75 | -// ->setHost('imap.exmail.qq.com'); | 74 | + $config = (new \Lib\Imap\ImapConfig()) |
75 | + ->setEmail($email['email']) | ||
76 | + ->setPassword(base64_decode($email['password'])) | ||
77 | + ->setHost($email['imap']); | ||
76 | 78 | ||
77 | 79 | ||
78 | $imap = \Lib\Imap\ImapPool::get($config); | 80 | $imap = \Lib\Imap\ImapPool::get($config); |
79 | //$imap->debug(); | 81 | //$imap->debug(); |
80 | $login = $imap->login(); | 82 | $login = $imap->login(); |
81 | if($login->isOk()) { | 83 | if($login->isOk()) { |
82 | - $msgno = (int) app()->request('msgno'); | 84 | + $uid = (int) app()->request('uid'); |
85 | + $page = (int) app()->request('page',1); | ||
83 | // foreach ($imap->getFolders()->all() as $a){ | 86 | // foreach ($imap->getFolders()->all() as $a){ |
84 | // echo $a->folder; | 87 | // echo $a->folder; |
85 | // echo '=>'; | 88 | // echo '=>'; |
@@ -87,18 +90,27 @@ return 404; | @@ -87,18 +90,27 @@ return 404; | ||
87 | // echo '|'; | 90 | // echo '|'; |
88 | // }; | 91 | // }; |
89 | $folder = $imap->folder('INBOX'); | 92 | $folder = $imap->folder('INBOX'); |
93 | + | ||
94 | + if($uid){ | ||
95 | + $msg = $folder->msg()->uid([$uid])->get()->first(); | ||
96 | + | ||
97 | + return $msg->body->getHtml(); | ||
98 | + } | ||
99 | + | ||
100 | + | ||
90 | echo '总共有:'; | 101 | echo '总共有:'; |
91 | echo $folder->getTotal(); | 102 | echo $folder->getTotal(); |
92 | echo "<br>"; | 103 | echo "<br>"; |
93 | echo "<br>"; | 104 | echo "<br>"; |
94 | - echo '<a href="?msgno='.($msgno+1).'">下一个</a>'; | 105 | + echo '<a href="?mid='.$email['id'].'&page='.($page+1).'">下一页</a>'; |
95 | echo "<br>"; | 106 | echo "<br>"; |
96 | echo "<hr>"; | 107 | echo "<hr>"; |
97 | 108 | ||
98 | - $msgs = $folder->msg()->forPage(449)->get(); | 109 | + |
110 | + $msgs = $folder->msg()->forPage($page)->get(); | ||
99 | if ($msgs) { | 111 | if ($msgs) { |
100 | - $msgs->each(function ($msg){ | ||
101 | - echo '<p>'.$msg->uid.'==>'.$msg->header->getSubject().' =====> '.date('Y-m-d H:i:s',strtotime($msg->date)).'</p>'; | 112 | + $msgs->each(function ($msg) use($email){ |
113 | + echo '<p><a href="?mid='.$email['id'].'&uid='.$msg->uid.'">'.$msg->uid.'==>'.$msg->header->getSubject().' =====> '.date('Y-m-d H:i:s',strtotime($msg->date)).'</a></p>'; | ||
102 | }); | 114 | }); |
103 | // echo $msg->header->getSubject(); | 115 | // echo $msg->header->getSubject(); |
104 | // echo '<br>-------------------------------------------------<br>'; | 116 | // echo '<br>-------------------------------------------------<br>'; |
@@ -293,7 +293,7 @@ class MailListV2Es extends Base { | @@ -293,7 +293,7 @@ class MailListV2Es extends Base { | ||
293 | } | 293 | } |
294 | 294 | ||
295 | // 手动触发同步es | 295 | // 手动触发同步es |
296 | - if(empty($v['is_auto']) && $v['folder_name']=='收件箱') redis()->rPush('sync_to_es',$v['id']); | 296 | + // if(empty($v['is_auto']) && $v['folder_name']=='收件箱') redis()->rPush('sync_to_es',$v['id']); |
297 | 297 | ||
298 | return $v; | 298 | return $v; |
299 | },$lists?:[]); | 299 | },$lists?:[]); |
@@ -31,54 +31,6 @@ class MailListV2Es2 extends Base { | @@ -31,54 +31,6 @@ class MailListV2Es2 extends Base { | ||
31 | $this->es = \es('email_lists'); | 31 | $this->es = \es('email_lists'); |
32 | } | 32 | } |
33 | 33 | ||
34 | - /** | ||
35 | - * 当前邮箱下指定的文件夹 | ||
36 | - * @param string $folder | ||
37 | - * @return array | ||
38 | - * @throws \Lib\Err | ||
39 | - * @author:dc | ||
40 | - * @time 2024/7/19 11:37 | ||
41 | - */ | ||
42 | - private function getFolderId(string $folder,$emails=[]){ | ||
43 | - if(!$emails){ | ||
44 | - $emails = $this->getEmails('id'); | ||
45 | - } | ||
46 | - $k = md5(json_encode($emails)); | ||
47 | - // 查询 文件夹 | ||
48 | - static $folderList; | ||
49 | - if(empty($folderList[$k])){ | ||
50 | - $folderList[$k] = db()->all(folderSql::all($emails)); | ||
51 | - } | ||
52 | - $folder_id = []; | ||
53 | - // 文件夹id | ||
54 | - if($folderList[$k]){ | ||
55 | - foreach ($folderList[$k] as $item){ | ||
56 | - if(folderAlias($item['folder']) == $folder){ | ||
57 | - $folder_id[] = $item['id']; | ||
58 | - } | ||
59 | - } | ||
60 | - } | ||
61 | - if(!$folder_id){ | ||
62 | - app()->e('folder_not_fount'); | ||
63 | - } | ||
64 | - | ||
65 | - return $folder_id; | ||
66 | - } | ||
67 | - | ||
68 | - | ||
69 | - /** | ||
70 | - * 处理like条件 | ||
71 | - * @param $str | ||
72 | - * @return string | ||
73 | - * @author:dc | ||
74 | - * @time 2024/9/4 11:14 | ||
75 | - */ | ||
76 | - private function getLikeStr($str){ | ||
77 | - if(str_starts_with($str, '^')){ | ||
78 | - return addslashes(mb_substr($str,1,99)).'%%'; | ||
79 | - } | ||
80 | - return '%%'.addslashes($str).'%%'; | ||
81 | - } | ||
82 | 34 | ||
83 | /** | 35 | /** |
84 | * 邮件列表 | 36 | * 邮件列表 |
@@ -276,7 +228,7 @@ class MailListV2Es2 extends Base { | @@ -276,7 +228,7 @@ class MailListV2Es2 extends Base { | ||
276 | } | 228 | } |
277 | 229 | ||
278 | // 手动触发同步es | 230 | // 手动触发同步es |
279 | - redis()->rPush('sync_to_es',$v['id']); | 231 | + // redis()->rPush('sync_to_es',$v['id']); |
280 | 232 | ||
281 | return $v; | 233 | return $v; |
282 | },$lists?:[]); | 234 | },$lists?:[]); |
@@ -488,6 +440,8 @@ class MailListV2Es2 extends Base { | @@ -488,6 +440,8 @@ class MailListV2Es2 extends Base { | ||
488 | */ | 440 | */ |
489 | private function countFlagged($body){ | 441 | private function countFlagged($body){ |
490 | $body['query']['bool']['must'][] = ['term'=>['flagged'=>1]]; | 442 | $body['query']['bool']['must'][] = ['term'=>['flagged'=>1]]; |
443 | + $body['query']['bool']['must'][] = ['terms'=>['folder_as_int'=>[1,2,3,4,5]]]; | ||
444 | + | ||
491 | if($this->assignSql('收件箱')) | 445 | if($this->assignSql('收件箱')) |
492 | $body['query']['bool']['must'][] = $this->assignSql('收件箱'); | 446 | $body['query']['bool']['must'][] = $this->assignSql('收件箱'); |
493 | return $this->es->count($body); | 447 | return $this->es->count($body); |
-
请 注册 或 登录 后发表评论