2011-03-15 53 views
4

我試圖用獲取電子郵件正文的特定部分:imap_fetchbody - 編碼人體錯誤

$message = imap_fetchbody ($imap_stream,$n,1); 

這工作正常使用Outlook,Hotmail的,雅虎等發送的電子郵件但當我嘗試獲取從黑莓或Andriod的設備發送的電子郵件的主體,該消息被編碼和加擾如:

xmb250IHN0eWxlPSdjb2xvcjojRjk3MWIxMDNiMTEyYjExOGI0N2I1MWI1 

雖然體進行編碼,報頭是好的。 如何解碼從Android或Blackberry設備發送的電子郵件的郵件正文?

謝謝

克里斯。

回答

6

您應該可以運行imap_fetchstructure以獲取編碼值。如果該值等於3,則需要通過imap_base64進行解碼。

我用以下之前(不記得,如果它與發送手機郵箱之前測試過,雖然):

$structure = imap_fetchstructure($stream, $msgno); 
$text = imap_fetchbody($stream, $msgno, $partnum); 
if($structure->encoding == 3) { 
    $text = imap_base64($text); 
} else if($structure->encoding == 4) { 
    $text = imap_qprint($text)); 
} 
+0

謝謝。它正在處理一些電子郵件。一些電子郵件編碼值是O但仍然被編碼。目前我正在詳細研究imap_fetchstructure數組。會回到你身邊。 – Kit 2011-03-15 11:46:58

+1

已排序。我只需要在數組中爲不同的電子郵件客戶端使用不同位置的編碼值:if($ structure-> parts [0] - > encoding == 3 || $ structure-> encoding == 3) '。現在都在工作。謝謝。 Upvoted。 – Kit 2011-03-15 12:02:06

+0

小心。 $ structure->零件不能存在。使用:if(($ obj_structure-> encoding == 3)|| isset($ obj_structure-> parts)&&($ obj_structure-> parts [0] - > encoding == 3)){ – Jerry 2017-04-03 07:41:53