作者 邓超

body 解析

... ... @@ -523,11 +523,23 @@ function get_email_uuid($subject,$udate,$form,$to,$size){
* @time 2024/8/29 10:51
*/
function mb_iconv($str, $to, $from = null) {
try {
return mb_convert_encoding($str, $to, $from);
}catch (Throwable $e){
return $str;
if($str){
try {
$s = mb_convert_encoding($str, $to, $from);
if($s){
return $s;
}
}catch (Throwable $e){
if($from){
$s = @iconv($from,$to,$str);
if($s){
return $s;
}
}
}
}
return $str;
}
... ...
... ... @@ -28,11 +28,7 @@ class Fun {
$from = self::getEncodingAliases($from);
try {
return mb_convert_encoding($str,$to,$from);
}catch (\Throwable $e){}
return mb_convert_encoding($str,$to);
return mb_iconv($str,$to,$from);
}
... ...
... ... @@ -87,7 +87,7 @@ class Imap {
if($folder instanceof \Lib\Imap\Parse\Folder\Folder){
$folder = $folder->folder;
}else{
if(!$utf7) $folder = mb_convert_encoding($folder,"UTF7-IMAP","UTF-8");
if(!$utf7) $folder = mb_iconv($folder,"UTF7-IMAP","UTF-8");
}
return new Folder($this,$folder);
}
... ...
... ... @@ -53,7 +53,7 @@ class Folder{
* @time 2024/9/20 10:00
*/
public function getParseFolder(){
return mb_convert_encoding($this->folder, 'UTF-8', 'UTF7-IMAP');
return mb_iconv($this->folder, 'UTF-8', 'UTF7-IMAP');
}
/**
... ...
... ... @@ -227,7 +227,7 @@ class Folder extends Request{
*/
public function rename(string $newFolder, bool $is_utf7 = true):bool {
// 需要转码
if(!$is_utf7) $newFolder = mb_convert_encoding($newFolder,'UTF7-IMAP','UTF-8');
if(!$is_utf7) $newFolder = mb_iconv($newFolder,'UTF7-IMAP','UTF-8');
// RENAME oldfolder newfolder
$this->cmd('RENAME "%s" "%s"',$this->folder,$newFolder);
... ...
... ... @@ -371,7 +371,7 @@ class Msg extends Request{
* @time 2024/9/24 10:47
*/
public function move(string $folder, bool $utf7 = true):bool {
if(!$utf7) $folder = mb_convert_encoding($folder,"UTF7-IMAP","UTF-8");
if(!$utf7) $folder = mb_iconv($folder,"UTF7-IMAP","UTF-8");
// "UID MOVE {$uids} \"{$folder}\""
$this->cmd('%s MOVE %s "%s"',
$this->isUid?'UID ':'',
... ... @@ -391,7 +391,7 @@ class Msg extends Request{
* @time 2024/9/24 10:51
*/
public function copy(string $folder, bool $utf7 = true):bool {
if(!$utf7) $folder = mb_convert_encoding($folder,"UTF7-IMAP","UTF-8");
if(!$utf7) $folder = mb_iconv($folder,"UTF7-IMAP","UTF-8");
// "UID COPY {$uids} \"{$folder}\""
$this->cmd('%s COPY %s "%s"',
$this->isUid?'UID ':'',
... ...
... ... @@ -447,7 +447,7 @@ class Imap {
// 源文件夹名称,在进行 select的时候必须用未解析的文件夹名称
'folder' => trim(trim($m[3]),'"'),
// 解析过的文件夹名称
'parseFolder' => mb_convert_encoding(trim(trim($m[3]),'"'), 'UTF-8', 'UTF7-IMAP'),
'parseFolder' => mb_iconv(trim(trim($m[3]),'"'), 'UTF-8', 'UTF7-IMAP'),
// 是否可选择
'isSelect' => strpos($m[1],'NoSelect')===false,
// 这里里面包含了公共的功能文件夹 比如 草稿,发送,有些邮箱没有
... ... @@ -494,7 +494,7 @@ class Imap {
*/
public function folderRename(string $oldFolder, string $newFolder){
// 需要转码
$newFolder = mb_convert_encoding($newFolder,'UTF7-IMAP','UTF-8');
$newFolder = mb_iconv($newFolder,'UTF7-IMAP','UTF-8');
// RENAME oldfolder newfolder
$res = $this->request("RENAME {$oldFolder} {$newFolder}");
... ...
... ... @@ -326,7 +326,7 @@ class MailFun {
* @time 2023/3/14 9:37
*/
public static function folderEncoding($folder):string {
return mb_convert_encoding($folder,'UTF7-IMAP','UTF-8');
return mb_iconv($folder,'UTF7-IMAP','UTF-8');
}
/**
... ... @@ -572,7 +572,7 @@ class Header
if (!$from) {
return mb_convert_encoding($str, $to);
}
return mb_convert_encoding($str, $to, $from);
return mb_iconv($str, $to, $from);
}
} catch (\Exception $e) {
if (strstr($from, '-')) {
... ...