| 
...
 | 
...
 | 
@@ -2,11 +2,13 @@ | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 namespace Controller;
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 use Lib\Imap\ImapConfig;
 | 
| 
 | 
 | 
 use Lib\Imap\ImapPool;
 | 
| 
 | 
 | 
 use Lib\Mail\Mail;
 | 
| 
 | 
 | 
 use Lib\Mail\MailFun;
 | 
| 
 | 
 | 
 use Lib\Verify;
 | 
| 
 | 
 | 
 use Model\emailSql;
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 use Service\SyncMail;
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 /**
 | 
| 
...
 | 
...
 | 
@@ -106,16 +108,23 @@ class Login { | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         $mailClient = ImapPool::get(
 | 
| 
 | 
 | 
             (new ImapConfig())
 | 
| 
 | 
 | 
                 ->setPassword($formData['password'])
 | 
| 
 | 
 | 
                 ->setHost($formData['imap'])
 | 
| 
 | 
 | 
             ->setEmail($formData['email'])
 | 
| 
 | 
 | 
         );
 | 
| 
 | 
 | 
         // 进行远程登录,验证
 | 
| 
 | 
 | 
         $mailClient = (new Mail($formData['email'],$formData['password'],$formData['imap']));
 | 
| 
 | 
 | 
 //        $mailClient = (new Mail($formData['email'],$formData['password'],$formData['imap']));
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         $login = $mailClient->login(false);
 | 
| 
 | 
 | 
         if( $login === 0){
 | 
| 
 | 
 | 
             app()->e('login_error_imap');
 | 
| 
 | 
 | 
         }elseif ($login === -1){
 | 
| 
 | 
 | 
             app()->e('email_server_error');
 | 
| 
 | 
 | 
         $login = $mailClient->login();
 | 
| 
 | 
 | 
         if(!$login->isOk()){
 | 
| 
 | 
 | 
             app()->e($login->getMessage()?'登录失败:'.$login->getMessage():'IMAP:服务器连接失败');
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         // 验证smtp登录
 | 
| 
 | 
 | 
         if(!MailFun::smtpLoginTest($formData['smtp'],$formData['email'],$formData['password'])){
 | 
| 
 | 
 | 
             app()->e('email_smtp_server_error');
 | 
| 
...
 | 
...
 | 
@@ -154,7 +163,9 @@ class Login { | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
         if($ret){
 | 
| 
 | 
 | 
             // 同步一次文件夹
 | 
| 
 | 
 | 
             $mailClient->syncFolder(db()->value(emailSql::hasEmail($formData['email'])));
 | 
| 
 | 
 | 
             try{
 | 
| 
 | 
 | 
                 (new SyncMail($formData['email'],$mailClient))->sync(false);
 | 
| 
 | 
 | 
             }catch (\Throwable $e){}
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
             $ret = db()->first(
 | 
| 
 | 
 | 
                 emailSql::first(
 | 
...
 | 
...
 | 
 |