作者 邓超

x

... ... @@ -61,7 +61,7 @@ class SyncMail {
->setHost($email['imap'])
->setEmail($email['email'])
->setPassword(base64_decode($email['password']))
->debug()
// ->debug()
);
$this->login();
... ... @@ -277,12 +277,17 @@ class SyncMail {
if(!$id){
$id = $this->db->insert(listsSql::$table,$data);
$id = $this->insert($data);
if(!$id){
continue;
}
// 新邮件标记
if($item->getFolderName() == 'INBOX')
redis()->incr('have_new_mail_'.$this->emailId(),120);
// 执行事件
$data['Aicc-Hot-Mail'] = $item->header->get('Aicc-Hot-Mail');
Event::call('mail_sync_list',$id, $data);
}else{
... ... @@ -295,9 +300,18 @@ class SyncMail {
$body = [
'lists_id' => $id,
'text_html' => $item->getBody()->getItems()
'text_html' => []
];
foreach ($item->getBody()->getItems() as $item){
$body['text_html'] = [
'body' => $item->body,
'content-type' => $item->get('content-type'),
'content-id' => $item->get('content-id'),
'charset' => $item->get('charset')
];
}
if($this->db->count(bodySql::has($id))){
$this->db->update(bodySql::$table,$body,'`lists_id` = '.$id,false);
}else{
... ... @@ -312,7 +326,38 @@ class SyncMail {
}
/**
* 查询数据 并重试
* @param array $data
* @param int $num
* @return int
* @author:dc
* @time 2024/10/12 15:32
*/
protected function insert(array $data, int $num = 0){
if($num>2){
return 0;
}
try {
$id = $this->db->throw()->insert(listsSql::$table,$data);
}catch (\Throwable $e){
// 字符串编码异常
if(stripos($e->getMessage(),'SQLSTATE[HY000]: General error: 1366 Incorrect string value:')!==false){
// 编码异常的 字段
preg_match("/for column '([a-z0-9_]{2,})' at/",$e->getMessage(),$filed);
if(!empty($filed[1]) && isset($data[$filed[1]])){
// 进行编码转换 大概率会失败
$data[$filed[1]] = mb_convert_encoding($data[$filed[1]],'UTF-8');
}
$id = $this->insert($data,$num+1);
}
logs($e->getMessage());
}
return $id;
}
... ...