| 
@@ -7,6 +7,7 @@ use Lib\Imap\ImapPool; | 
 | 
@@ -7,6 +7,7 @@ use Lib\Imap\ImapPool; | 
| 
7
 | 
 use Lib\Mail\MailFun;
 | 
7
 | 
 use Lib\Mail\MailFun;
 | 
| 
8
 | 
 use Lib\Verify;
 | 
8
 | 
 use Lib\Verify;
 | 
| 
9
 | 
 use Model\emailSql;
 | 
9
 | 
 use Model\emailSql;
 | 
| 
 | 
   | 
10
 | 
+use Service\MailProxy;
 | 
| 
10
 | 
 use Service\SyncMail;
 | 
11
 | 
 use Service\SyncMail;
 | 
| 
11
 | 
 
 | 
12
 | 
 
 | 
| 
12
 | 
 
 | 
13
 | 
 
 | 
 | 
@@ -46,76 +47,14 @@ class Login { | 
 | 
@@ -46,76 +47,14 @@ class Login { | 
| 
46
 | 
             app()->e('smtp_verify_error');
 | 
47
 | 
             app()->e('smtp_verify_error');
 | 
| 
47
 | 
         }
 | 
48
 | 
         }
 | 
| 
48
 | 
 
 | 
49
 | 
 
 | 
| 
49
 | 
-        // 是否是shopk那边已添加的邮箱,进行代理
 | 
 | 
   | 
| 
50
 | 
-        $status = file_get_contents('https://oa.shopk.com/fob-check-email/'.$formData['email']);
 | 
 | 
   | 
| 
51
 | 
-        // 存在 就把服务器替换为代理服务器
 | 
 | 
   | 
| 
52
 | 
-        if($status=='exist'){
 | 
 | 
   | 
| 
53
 | 
-            /**
 | 
 | 
   | 
| 
54
 | 
-             * 代理功能 去shopk检查邮件是否被添加到shopk了。
 | 
 | 
   | 
| 
55
 | 
-             * 如果添加到shopk了就把请求地址替换成shopk的服务器地址
 | 
 | 
   | 
| 
56
 | 
-             * 由shopk代理
 | 
 | 
   | 
| 
57
 | 
-             * 避免出现换ip登录的情况而被封号
 | 
 | 
   | 
| 
58
 | 
-             */
 | 
 | 
   | 
| 
59
 | 
-            $callHost = function (string $host,int $prot){
 | 
 | 
   | 
| 
60
 | 
-                $host = parse_url($host);
 | 
 | 
   | 
| 
61
 | 
-                if(empty($host['host'])){
 | 
 | 
   | 
| 
62
 | 
-                    $host = $host['path'].':'.$prot;
 | 
 | 
   | 
| 
63
 | 
-                }else{
 | 
 | 
   | 
| 
64
 | 
-                    $host = $host['host'].':'.(empty($host['port'])?$prot:$host['port']);
 | 
 | 
   | 
| 
65
 | 
-                }
 | 
 | 
   | 
| 
66
 | 
-                return $host;
 | 
 | 
   | 
| 
67
 | 
-            };
 | 
 | 
   | 
| 
68
 | 
-
 | 
 | 
   | 
| 
69
 | 
-            $formData['imap'] = $callHost($formData['imap'],993);
 | 
 | 
   | 
| 
70
 | 
-            $formData['smtp'] = $callHost($formData['smtp'],465);
 | 
 | 
   | 
| 
71
 | 
-            // 服务器代理到shopk服务器上面
 | 
 | 
   | 
| 
72
 | 
-            // 新增代理 域名 必须要在 43.154.117.107服务器的nginx添加对应的配置,一个域名一个端口为一个配置
 | 
 | 
   | 
| 
73
 | 
-            // 配置在 /www/server/panel/vhost/nginx/tcp/ 目录
 | 
 | 
   | 
| 
74
 | 
-            $proxy = [
 | 
 | 
   | 
| 
75
 | 
-                'imap.gmail.com:993'    =>  '43.154.117.107:10086',
 | 
 | 
   | 
| 
76
 | 
-                'smtp.gmail.com:465'    =>  '43.154.117.107:10087',
 | 
 | 
   | 
| 
77
 | 
-
 | 
 | 
   | 
| 
78
 | 
-                'imap-mail.outlook.com:993'    =>  '43.154.117.107:10088',
 | 
 | 
   | 
| 
79
 | 
-                'smtp-mail.outlook.com:465'    =>  '43.154.117.107:10089',
 | 
 | 
   | 
| 
80
 | 
-//                'outlook.office365.com:993'    =>  '43.154.117.107:10098',
 | 
 | 
   | 
| 
81
 | 
-
 | 
 | 
   | 
| 
82
 | 
-//                'imap.aol.com:993'    =>  '43.154.117.107:10090',
 | 
 | 
   | 
| 
83
 | 
-//                'smtp.aol.com:465'    =>  '43.154.117.107:10091',
 | 
 | 
   | 
| 
84
 | 
-
 | 
 | 
   | 
| 
85
 | 
-                'imap.mail.yahoo.com:993'    =>  '43.154.117.107:10092',
 | 
 | 
   | 
| 
86
 | 
-                'smtp.mail.yahoo.com:465'    =>  '43.154.117.107:10093',
 | 
 | 
   | 
| 
87
 | 
-
 | 
 | 
   | 
| 
88
 | 
-                'imap.qiye.aliyun.com:993'    =>  '43.154.117.107:10094',
 | 
 | 
   | 
| 
89
 | 
-                'smtp.qiye.aliyun.com:465'    =>  '43.154.117.107:10095',
 | 
 | 
   | 
| 
90
 | 
-
 | 
 | 
   | 
| 
91
 | 
-//                'imap.rambler.ru:993'    =>  '43.154.117.107:10096',
 | 
 | 
   | 
| 
92
 | 
-//                'smtp.rambler.ru:465'    =>  '43.154.117.107:10097',
 | 
 | 
   | 
| 
93
 | 
-
 | 
 | 
   | 
| 
94
 | 
-                'imaphz.qiye.163.com:993'    =>  '43.154.117.107:10080',
 | 
 | 
   | 
| 
95
 | 
-                'smtphz.qiye.163.com:465'    =>  '43.154.117.107:10081',
 | 
 | 
   | 
| 
96
 | 
-
 | 
 | 
   | 
| 
97
 | 
-
 | 
 | 
   | 
| 
98
 | 
-            ];
 | 
 | 
   | 
| 
99
 | 
-            // 是否存在代理
 | 
 | 
   | 
| 
100
 | 
-            if(empty($proxy[$formData['imap']]) || empty($proxy[$formData['smtp']]) ){
 | 
 | 
   | 
| 
101
 | 
-                app()->e('请联系站点管理员添加代理');
 | 
 | 
   | 
| 
102
 | 
-            }
 | 
 | 
   | 
| 
103
 | 
-            // 替换为代理服务器
 | 
 | 
   | 
| 
104
 | 
-            $formData['imap'] = $proxy[$formData['imap']];
 | 
 | 
   | 
| 
105
 | 
-            $formData['smtp'] = $proxy[$formData['smtp']];
 | 
 | 
   | 
| 
106
 | 
-
 | 
 | 
   | 
| 
107
 | 
-        }
 | 
 | 
   | 
| 
108
 | 
-
 | 
50
 | 
+        $proxy = (new MailProxy($formData['email'],$formData['imap'],$formData['smtp']));
 | 
| 
109
 | 
 
 | 
51
 | 
 
 | 
| 
110
 | 
         $mailClient = ImapPool::get(
 | 
52
 | 
         $mailClient = ImapPool::get(
 | 
| 
111
 | 
             (new ImapConfig())
 | 
53
 | 
             (new ImapConfig())
 | 
| 
112
 | 
                 ->setPassword($formData['password'])
 | 
54
 | 
                 ->setPassword($formData['password'])
 | 
| 
113
 | 
-                ->setHost($formData['imap'])
 | 
55
 | 
+                ->setHost($proxy->getImapProxy())
 | 
| 
114
 | 
             ->setEmail($formData['email'])
 | 
56
 | 
             ->setEmail($formData['email'])
 | 
| 
115
 | 
         );
 | 
57
 | 
         );
 | 
| 
116
 | 
-        // 进行远程登录,验证
 | 
 | 
   | 
| 
117
 | 
-//        $mailClient = (new Mail($formData['email'],$formData['password'],$formData['imap']));
 | 
 | 
   | 
| 
118
 | 
-
 | 
 | 
   | 
| 
119
 | 
 
 | 
58
 | 
 
 | 
| 
120
 | 
         $login = $mailClient->login();
 | 
59
 | 
         $login = $mailClient->login();
 | 
| 
121
 | 
         if(!$login->isOk()){
 | 
60
 | 
         if(!$login->isOk()){
 | 
 | 
@@ -125,7 +64,7 @@ class Login { | 
 | 
@@ -125,7 +64,7 @@ class Login { | 
| 
125
 | 
 
 | 
64
 | 
 
 | 
| 
126
 | 
 
 | 
65
 | 
 
 | 
| 
127
 | 
         // 验证smtp登录
 | 
66
 | 
         // 验证smtp登录
 | 
| 
128
 | 
-        if(!MailFun::smtpLoginTest($formData['smtp'],$formData['email'],$formData['password'])){
 | 
67
 | 
+        if(!MailFun::smtpLoginTest($proxy->getSmtpProxy(),$formData['email'],$formData['password'])){
 | 
| 
129
 | 
             app()->e('email_smtp_server_error');
 | 
68
 | 
             app()->e('email_smtp_server_error');
 | 
| 
130
 | 
         }
 | 
69
 | 
         }
 | 
| 
131
 | 
 
 | 
70
 | 
 
 | 
 | 
@@ -135,11 +74,12 @@ class Login { | 
 | 
@@ -135,11 +74,12 @@ class Login { | 
| 
135
 | 
 
 | 
74
 | 
 
 | 
| 
136
 | 
         $data = [
 | 
75
 | 
         $data = [
 | 
| 
137
 | 
             'password'  =>  base64_encode($formData['password']),
 | 
76
 | 
             'password'  =>  base64_encode($formData['password']),
 | 
| 
138
 | 
-            'imap'  =>  $formData['imap'],
 | 
 | 
   | 
| 
139
 | 
-            'smtp'  =>  $formData['smtp'],
 | 
77
 | 
+            'imap'  =>  $proxy->getImapProxy(),
 | 
| 
 | 
   | 
78
 | 
+            'smtp'  =>  $proxy->getSmtpProxy(),
 | 
| 
140
 | 
             'status'    =>  1,
 | 
79
 | 
             'status'    =>  1,
 | 
| 
141
 | 
             'pwd_error'    =>  0
 | 
80
 | 
             'pwd_error'    =>  0
 | 
| 
142
 | 
         ];
 | 
81
 | 
         ];
 | 
| 
 | 
   | 
82
 | 
+        $proxy->proxySuccess();// 标记代理成功
 | 
| 
143
 | 
 
 | 
83
 | 
 
 | 
| 
144
 | 
         if($id){
 | 
84
 | 
         if($id){
 | 
| 
145
 | 
             // 修改
 | 
85
 | 
             // 修改
 |