...
|
...
|
@@ -2,7 +2,6 @@ |
|
|
|
|
|
namespace Controller;
|
|
|
|
|
|
use Lib\Mail\Mail;
|
|
|
use Model\emailSql;
|
|
|
use Model\listsSql;
|
|
|
|
...
|
...
|
@@ -14,106 +13,62 @@ use Model\listsSql; |
|
|
*/
|
|
|
class Home {
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 登录操作
|
|
|
* @return int[]
|
|
|
* @author:dc
|
|
|
* @time 2023/2/13 11:50
|
|
|
* 当前登录的邮箱
|
|
|
* @var array[]
|
|
|
*/
|
|
|
public function login(){
|
|
|
// $mail,$password,$imap,$smtp
|
|
|
$formData = app()->request(['email','password','imap','smtp']);
|
|
|
|
|
|
if(empty($formData['email']) || !preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/",$formData['email'])){
|
|
|
app()->e('email_verify_error');
|
|
|
}
|
|
|
private $login_email;
|
|
|
|
|
|
if(empty($formData['password'])){
|
|
|
app()->e('password_verify_error');
|
|
|
}
|
|
|
|
|
|
if(empty($formData['imap'])){
|
|
|
app()->e('imap_verify_error');
|
|
|
}
|
|
|
|
|
|
if(empty($formData['smtp'])){
|
|
|
app()->e('smtp_verify_error');
|
|
|
}
|
|
|
|
|
|
// 进行远程登录,验证
|
|
|
Mail::login($formData['email'],$formData['password'],$formData['imap']);
|
|
|
|
|
|
// 是否存在
|
|
|
$id = db()->value(emailSql::hasEmail($formData['email']));
|
|
|
|
|
|
$data = [
|
|
|
'password' => base64_encode($formData['password']),
|
|
|
'imap' => $formData['imap'],
|
|
|
'smtp' => $formData['smtp'],
|
|
|
'status' => 1,
|
|
|
'pwd_error' => 0,
|
|
|
'name' => '',
|
|
|
'token' => md5($formData['email'].$formData['password'].$formData['imap']),
|
|
|
];
|
|
|
|
|
|
if($id){
|
|
|
// 修改
|
|
|
$ret = db()->update(emailSql::$table,$data,dbWhere(['id'=>$id]));
|
|
|
}else{
|
|
|
// 新增
|
|
|
$ret = db()->insert(emailSql::$table,$data);
|
|
|
|
|
|
if($ret){
|
|
|
// 增加邮件数量
|
|
|
redis()->incr('email_total');
|
|
|
// 立即处理 同步
|
|
|
redis()->lPush('sync_email_lists', $ret);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
if($ret){
|
|
|
app()->_json([
|
|
|
'token' => $data['token']
|
|
|
]);
|
|
|
/**
|
|
|
* 构造
|
|
|
* Home constructor.
|
|
|
*/
|
|
|
public function __construct()
|
|
|
{
|
|
|
// 获取 当前请求的 邮箱
|
|
|
$this->login_email = db()->first(emailSql::firstByToken(token()));
|
|
|
if(!$this->login_email){
|
|
|
app()->e('token_verify_notfound');
|
|
|
}
|
|
|
|
|
|
app()->e('login_error');
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 邮件列表
|
|
|
* @author:dc
|
|
|
* @time 2023/2/17 14:12
|
|
|
*/
|
|
|
public function lists(){
|
|
|
$email = db()->first(emailSql::firstByToken(token()));
|
|
|
if(!$email){
|
|
|
app()->e('token_verify_notfound');
|
|
|
}
|
|
|
|
|
|
// 分页 页数
|
|
|
$page = app()->request('page',1,'intval');
|
|
|
$page = $page ? $page : 1;
|
|
|
|
|
|
$lists = db()->all(listsSql::lists($email['id'],$page));
|
|
|
$lists = db()->all(listsSql::lists($this->login_email['id'],$page));
|
|
|
|
|
|
app()->_json(listsPage($lists,100,1,30));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 邮箱文件夹
|
|
|
* @author:dc
|
|
|
* @time 2023/2/18 10:58
|
|
|
*/
|
|
|
public function folder(){
|
|
|
|
|
|
// 查询
|
|
|
$folders = db()->all(
|
|
|
\Model\folderSql::all(
|
|
|
$this->login_email['id'],
|
|
|
'`id`,`folder`,`pid`'
|
|
|
)
|
|
|
);
|
|
|
|
|
|
// 转tree
|
|
|
$folders = list_to_tree($folders);
|
|
|
|
|
|
app()->_json($folders);
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
|