作者 张关杰

serversubmit

@@ -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 -  
17 -  
18 public function home(){ 16 public function home(){
  17 + return 404;
  18 + }
  19 +
  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);