我正在使用PHP内置的imap扩展来读取来自imap电子邮件的消息,并将消息解析出来并将其添加到另一个系统的数据库中。
问题是消息是编码的。所以我将首先解码它,然后将其添加到数据库中。
我可以使用imap_fetchstructure()来查找使用它们编码的消息的编码类型,我应该可以对其进行解码。
所以这就是我所做的
$struct = imap_fetchstructure($this->conn, $id, 0);
if(isset($struct->encoding)){
$message = $this->_decodeMessage($message, $struct->encoding);
}
private function _decodeMessage($msg, $type){
if($type == 0){
return mb_convert_encoding($msg, "UTF-8", "auto");
} elseif($type == 1){
return imap_8bit($msg); //imap_utf8
} elseif($type == 2){
return imap_base64(imap_binary($msg));
} elseif($type == 3){
return imap_base64($msg);
} elseif($type == 4){
return imap_qprint($msg);
//return quoted_printable_decode($msg);
} else {
return $msg;
}
}
我遇到的问题是使用7BIT编码的某些消息未正确解码,我在打印$message
当类型为7BIT时,如何正确解码消息?