切换导航条
此项目
正在载入...
登录
周海龙
/
mail-serve
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
邓超
2 years ago
提交
108dca53f2c04076098066f71c4d8ba5ea597dc7
1 个父辈
d5aaad79
v2 调整
隐藏空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
42 行增加
和
57 行删除
controller/v2/Home.php
controller/v2/Home.php
查看文件 @
108dca5
...
...
@@ -100,67 +100,52 @@ class Home extends Base {
* @time 2023/8/2 16:19
*/
public
function
sync
(){
$emails
=
web_request_emails
();
$udate
=
app
()
->
request
(
'udate'
);
if
(
!
$udate
||
!
is_array
(
$udate
)){
return
''
;
}
// 查询邮箱
$emails
=
db
()
->
all
(
emailSql
::
all
(
dbWhere
([
'email'
=>
$emails
])));
if
(
!
$emails
){
$email
=
$this
->
getEmail
();
$udate
=
app
()
->
request
(
'udate'
,
0
,
'intval'
);
if
(
!
$udate
){
return
''
;
}
// 启用协程来处理
run
(
function
()
use
(
$emails
,
$udate
){
foreach
(
$emails
as
$email
){
// 读取文件夹
$fids
=
$this
->
getFolderIds
(
$email
[
'id'
]);
$folders
=
db
()
->
all
(
folderSql
::
all
(
$email
[
'id'
]));
// 循环 文件夹
foreach
(
$folders
as
$folder
){
// 是否在同步请求中
if
(
in_array
(
$folder
[
'id'
],
$fids
)){
// 启动 协程
go
(
function
()
use
(
$email
,
$udate
,
$folder
){
// 实例一个邮箱对象
$mail
=
new
Mail
(
$email
[
'email'
],
base64_decode
(
$email
[
'password'
]),
$email
[
'imap'
]);
// 登录
$mail
->
login
();
// 选择 文件夹
$mail
->
client
->
selectFolder
(
$folder
[
'origin_folder'
]);
// 最后的时间
$maxudate
=
db
()
->
value
(
sprintf
(
"select max(`udate`) from `%s` where `email_id` = %d and `folder_id` = %d limit 1"
,
listsSql
::
$table
,
$email
[
'id'
],
$folder
[
'id'
]
)
);
$udate
=
(
$udate
[
$email
[
'email'
]]
??
0
)
>
$maxudate
?
$udate
:
$maxudate
;
// 通过时间来搜索uid
$uids
=
$mail
->
client
->
search
([
'ON'
=>
date
(
'Y-m-d H:i:s'
,
$udate
)]);
// 进行同步
$mail
->
syncUidEmail
(
$uids
,
$email
[
'id'
],
$folder
[
'origin_folder'
],
$folder
[
'id'
],
[],
[],
db
()
);
});
}
}
// 读取文件夹
$fids
=
$this
->
getFolderIds
(
$email
[
'id'
]);
$folders
=
db
()
->
all
(
folderSql
::
all
(
$email
[
'id'
]));
// 启动 协程
// 实例一个邮箱对象
$mail
=
new
Mail
(
$email
[
'email'
],
base64_decode
(
$email
[
'password'
]),
$email
[
'imap'
]);
// 登录
$mail
->
login
();
// 循环 文件夹
foreach
(
$folders
as
$folder
){
// 是否在同步请求中
if
(
in_array
(
$folder
[
'id'
],
$fids
)){
// 选择 文件夹
$mail
->
client
->
selectFolder
(
$folder
[
'origin_folder'
]);
// 最后的时间
$maxudate
=
db
()
->
value
(
sprintf
(
"select max(`udate`) from `%s` where `email_id` = %d and `folder_id` = %d limit 1"
,
listsSql
::
$table
,
$email
[
'id'
],
$folder
[
'id'
]
)
);
$udate
=
$udate
>
$maxudate
?
$udate
:
$maxudate
;
// 通过时间来搜索uid
$uids
=
$mail
->
client
->
search
([
'ON'
=>
date
(
'Y-m-d H:i:s'
,
$udate
)]);
// 进行同步
$mail
->
syncUidEmail
(
$uids
,
$email
[
'id'
],
$folder
[
'origin_folder'
],
$folder
[
'id'
],
[],
[],
db
()
);
}
}
});
}
...
...
请
注册
或
登录
后发表评论