2010-04-27 60 views
3
解碼與他們的編碼類型郵件標題字符串

我創建一個小的,基於Web的,在PHP郵件客戶端,發現了一些電子郵件主題和內容的顯示如下:如何在他們的PHP

=?ISO-8859-1?Q?Everything_for_=A35_-_Box_Sets,_Games_?= =?ISO-8859-1?Q?and_CD_Soundtracks...hurry,_ends_soon?= 
=?utf-8?B?UGxheS5jb206IE9uZSBEYXkgT25seSDigJMgT3V0IG9mIHRoaXMgV29ybGQgRGVhbHMh?= 
=?windows-1252?Q?Jon,_delivery_on_us_&_earn_=A35_credit_or_50_prints?= 

有沒有人有任何解碼他們的想法,讓他們正確顯示?

回答

4

這是一個RFC 2047編碼字。它由mb_decode_mimeheader函數解碼。

+0

我指出,因爲一個可能的[複製]這裏(http://stackoverflow.com/questions/41894171/google-apps-office-365-imap-from-name-character-set-encoding-how-到解碼-I)。 如果您使用的是IMAP,請改用'imap_utf8()'。 – 2017-01-28 01:44:02

2

這是主要用於標頭的MIME編碼字符串。你可以找到很多可以處理這個問題的庫。例如,獲得PEAR ::郵件,利用此功能,

Mail_mimeDecode::_decodeHeader() 
0

這是一個老問題,但最近我碰到這個問題,在分析電子郵件。 當打印使用功能imap_header_info的頭信息,下面陣列所示:

stdClass Object 
(
    [subject] => =?Windows-1252?Q?field_name_-_need___`at_risk=92____into_t?= =?Windows-1252?Q?he_label_(_some_content_to_)_?= 
) 

但是,原來的主題是「字段名稱 - 需要在風險到標籤(某些內容)

爲了解決這個問題,該功能imap_mime_header_decode 必須用於循環中產生正確的文本:

$header = imap_headerinfo($email_obj, $email_ref_number, 0); 
$elements = imap_mime_header_decode($header->subject); 
$email_subject = ''; 
if (! empty($elements)) { 
    foreach ($elements AS $e_part) { 
     if (isset($e_part->text)) { 
      $email_subject .= $e_part->text; 
     } 
    } 
} 
echo $email_subject; 
相關問題