0
這是一個我一直在爭論很久的問題。我真的希望有人能幫助我。PHP IMAP電子郵件內容和MySQL編碼
我有一個PHP程序從IMAP郵箱讀取電子郵件。在經歷了一段時間的PHP IMAP函數之後,我設法將電子郵件的純文本內容放入一個變量中。
當我在一個日誌文件中對這個變量做var_dump時,我得到了一些很好的和可讀的東西。
但是,當我嘗試將此變量的值保存到我的MySQL數據庫時,它有時取決於原始郵件的編碼而失敗。
我說這是由於編碼,因爲它經常在第一個「特殊字符」失敗。因此,只顯示部分電子郵件。
有沒有什麼辦法可以「清理」在我的MySQL數據庫中使用的變量的值?我的MySQL數據庫的排序規則目前設置爲utf8_unicode_ci。
這是我一直使用到現在爲止解碼功能:
static function decode_text($text, $encoding)
{
//return quoted_printable_decode($text);
switch ($encoding) {
# 7BIT
case 0:
return imap_utf7_decode($text);
# 8BIT
case 1:
return imap_utf8($text);
# BINARY
case 2:
return imap_binary($text);
# BASE64
case 3:
return imap_base64($text);
# QUOTED-PRINTABLE
case 4:
return imap_qprint($text);
# OTHER
case 5:
return $text;
# UNKNOWN
default:
return $text;
}
}
感謝您的幫助!
如果你是存儲在MySQL數據庫中的IMAP電子郵件,你不必。 – e4c5
正確完成,PHP + MySQL從不需要像你的函數那樣解碼。所以我會假設Imap是問題。請提供編碼和解碼所需的 - 無論是在十六進制 - 樣品。 –