作者 邓超

body 解析

@@ -523,11 +523,23 @@ function get_email_uuid($subject,$udate,$form,$to,$size){ @@ -523,11 +523,23 @@ function get_email_uuid($subject,$udate,$form,$to,$size){
523 * @time 2024/8/29 10:51 523 * @time 2024/8/29 10:51
524 */ 524 */
525 function mb_iconv($str, $to, $from = null) { 525 function mb_iconv($str, $to, $from = null) {
526 - try {  
527 - return mb_convert_encoding($str, $to, $from);  
528 - }catch (Throwable $e){  
529 - return $str; 526 + if($str){
  527 + try {
  528 + $s = mb_convert_encoding($str, $to, $from);
  529 + if($s){
  530 + return $s;
  531 + }
  532 + }catch (Throwable $e){
  533 + if($from){
  534 + $s = @iconv($from,$to,$str);
  535 + if($s){
  536 + return $s;
  537 + }
  538 + }
  539 +
  540 + }
530 } 541 }
  542 + return $str;
531 } 543 }
532 544
533 545
@@ -28,11 +28,7 @@ class Fun { @@ -28,11 +28,7 @@ class Fun {
28 $from = self::getEncodingAliases($from); 28 $from = self::getEncodingAliases($from);
29 29
30 30
31 - try {  
32 - return mb_convert_encoding($str,$to,$from);  
33 - }catch (\Throwable $e){}  
34 -  
35 - return mb_convert_encoding($str,$to); 31 + return mb_iconv($str,$to,$from);
36 } 32 }
37 33
38 34
@@ -87,7 +87,7 @@ class Imap { @@ -87,7 +87,7 @@ class Imap {
87 if($folder instanceof \Lib\Imap\Parse\Folder\Folder){ 87 if($folder instanceof \Lib\Imap\Parse\Folder\Folder){
88 $folder = $folder->folder; 88 $folder = $folder->folder;
89 }else{ 89 }else{
90 - if(!$utf7) $folder = mb_convert_encoding($folder,"UTF7-IMAP","UTF-8"); 90 + if(!$utf7) $folder = mb_iconv($folder,"UTF7-IMAP","UTF-8");
91 } 91 }
92 return new Folder($this,$folder); 92 return new Folder($this,$folder);
93 } 93 }
@@ -53,7 +53,7 @@ class Folder{ @@ -53,7 +53,7 @@ class Folder{
53 * @time 2024/9/20 10:00 53 * @time 2024/9/20 10:00
54 */ 54 */
55 public function getParseFolder(){ 55 public function getParseFolder(){
56 - return mb_convert_encoding($this->folder, 'UTF-8', 'UTF7-IMAP'); 56 + return mb_iconv($this->folder, 'UTF-8', 'UTF7-IMAP');
57 } 57 }
58 58
59 /** 59 /**
@@ -227,7 +227,7 @@ class Folder extends Request{ @@ -227,7 +227,7 @@ class Folder extends Request{
227 */ 227 */
228 public function rename(string $newFolder, bool $is_utf7 = true):bool { 228 public function rename(string $newFolder, bool $is_utf7 = true):bool {
229 // 需要转码 229 // 需要转码
230 - if(!$is_utf7) $newFolder = mb_convert_encoding($newFolder,'UTF7-IMAP','UTF-8'); 230 + if(!$is_utf7) $newFolder = mb_iconv($newFolder,'UTF7-IMAP','UTF-8');
231 231
232 // RENAME oldfolder newfolder 232 // RENAME oldfolder newfolder
233 $this->cmd('RENAME "%s" "%s"',$this->folder,$newFolder); 233 $this->cmd('RENAME "%s" "%s"',$this->folder,$newFolder);
@@ -371,7 +371,7 @@ class Msg extends Request{ @@ -371,7 +371,7 @@ class Msg extends Request{
371 * @time 2024/9/24 10:47 371 * @time 2024/9/24 10:47
372 */ 372 */
373 public function move(string $folder, bool $utf7 = true):bool { 373 public function move(string $folder, bool $utf7 = true):bool {
374 - if(!$utf7) $folder = mb_convert_encoding($folder,"UTF7-IMAP","UTF-8"); 374 + if(!$utf7) $folder = mb_iconv($folder,"UTF7-IMAP","UTF-8");
375 // "UID MOVE {$uids} \"{$folder}\"" 375 // "UID MOVE {$uids} \"{$folder}\""
376 $this->cmd('%s MOVE %s "%s"', 376 $this->cmd('%s MOVE %s "%s"',
377 $this->isUid?'UID ':'', 377 $this->isUid?'UID ':'',
@@ -391,7 +391,7 @@ class Msg extends Request{ @@ -391,7 +391,7 @@ class Msg extends Request{
391 * @time 2024/9/24 10:51 391 * @time 2024/9/24 10:51
392 */ 392 */
393 public function copy(string $folder, bool $utf7 = true):bool { 393 public function copy(string $folder, bool $utf7 = true):bool {
394 - if(!$utf7) $folder = mb_convert_encoding($folder,"UTF7-IMAP","UTF-8"); 394 + if(!$utf7) $folder = mb_iconv($folder,"UTF7-IMAP","UTF-8");
395 // "UID COPY {$uids} \"{$folder}\"" 395 // "UID COPY {$uids} \"{$folder}\""
396 $this->cmd('%s COPY %s "%s"', 396 $this->cmd('%s COPY %s "%s"',
397 $this->isUid?'UID ':'', 397 $this->isUid?'UID ':'',
@@ -447,7 +447,7 @@ class Imap { @@ -447,7 +447,7 @@ class Imap {
447 // 源文件夹名称,在进行 select的时候必须用未解析的文件夹名称 447 // 源文件夹名称,在进行 select的时候必须用未解析的文件夹名称
448 'folder' => trim(trim($m[3]),'"'), 448 'folder' => trim(trim($m[3]),'"'),
449 // 解析过的文件夹名称 449 // 解析过的文件夹名称
450 - 'parseFolder' => mb_convert_encoding(trim(trim($m[3]),'"'), 'UTF-8', 'UTF7-IMAP'), 450 + 'parseFolder' => mb_iconv(trim(trim($m[3]),'"'), 'UTF-8', 'UTF7-IMAP'),
451 // 是否可选择 451 // 是否可选择
452 'isSelect' => strpos($m[1],'NoSelect')===false, 452 'isSelect' => strpos($m[1],'NoSelect')===false,
453 // 这里里面包含了公共的功能文件夹 比如 草稿,发送,有些邮箱没有 453 // 这里里面包含了公共的功能文件夹 比如 草稿,发送,有些邮箱没有
@@ -494,7 +494,7 @@ class Imap { @@ -494,7 +494,7 @@ class Imap {
494 */ 494 */
495 public function folderRename(string $oldFolder, string $newFolder){ 495 public function folderRename(string $oldFolder, string $newFolder){
496 // 需要转码 496 // 需要转码
497 - $newFolder = mb_convert_encoding($newFolder,'UTF7-IMAP','UTF-8'); 497 + $newFolder = mb_iconv($newFolder,'UTF7-IMAP','UTF-8');
498 // RENAME oldfolder newfolder 498 // RENAME oldfolder newfolder
499 $res = $this->request("RENAME {$oldFolder} {$newFolder}"); 499 $res = $this->request("RENAME {$oldFolder} {$newFolder}");
500 500
@@ -326,7 +326,7 @@ class MailFun { @@ -326,7 +326,7 @@ class MailFun {
326 * @time 2023/3/14 9:37 326 * @time 2023/3/14 9:37
327 */ 327 */
328 public static function folderEncoding($folder):string { 328 public static function folderEncoding($folder):string {
329 - return mb_convert_encoding($folder,'UTF7-IMAP','UTF-8'); 329 + return mb_iconv($folder,'UTF7-IMAP','UTF-8');
330 } 330 }
331 331
332 /** 332 /**
@@ -572,7 +572,7 @@ class Header @@ -572,7 +572,7 @@ class Header
572 if (!$from) { 572 if (!$from) {
573 return mb_convert_encoding($str, $to); 573 return mb_convert_encoding($str, $to);
574 } 574 }
575 - return mb_convert_encoding($str, $to, $from); 575 + return mb_iconv($str, $to, $from);
576 } 576 }
577 } catch (\Exception $e) { 577 } catch (\Exception $e) {
578 if (strstr($from, '-')) { 578 if (strstr($from, '-')) {