2012-04-26 2 views
0

Я делаю этот сценарий php php, который извлекает входящие письма и анализирует их и показывает. Я использовал этот учебник: http://www.damnsemicolon.com/php/parse-emails-in-php-with-email-piping-part-1 (и следующие), я попробовал его со стандартным электронным письмом, которое я отправил на свой сервер, и это действительно сработало, но потом я попробовал другое, и у меня появилось много ошибок. Я использовал print_r ($ decoded); чтобы показать мне все части электронной почты и вместо того, чтобы получать полностью синтаксический адрес электронной почты, все содержимое электронной почты отправляется на $ decode [0] ['body]; Почему это происходит? (Я не буду размещать код, потому что это то же самое, что и учебники)PHP script piping email parse

print_r($decode)= Array (
    [0] => Array ( 
     [Headers] => Array () 
     [Parts] => Array () 
     [Position] => 0 
     [Body] => From j[email protected] Thu Apr 26 12:33:44 2012 Received: from [192.168.1.92] by ubuntuserver.lan with esmtp (Exim 4.76) (envelope-from) id 1SNMxE-0000VB-TR for [email protected]; Thu, 26 Apr 2012 12:33:44 +0100 Message-ID: <[email protected]> Date: Thu, 26 Apr 2012 12:33:45 +0100 From: =?ISO-8859-1?Q?=22Jo=E3o_Ferreira_=28m=E1quina_virtual=29=22?= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120327 Thunderbird/11.0.1 MIME-Version: 1.0 To: [email protected] Subject: Sample Email Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit It's the same? 
     [BodyPart] => 1 
     [BodyLength] => 744 
    ) 
) 

Спасибо.

+0

Тогда может быть что-то не так с вашей библиотекой декодирования. Обратите внимание на ведущую спецификацию UTF-8 перед строкой 'From'. Это могло бы прикрутить его. – mario

ответ

0

Как сказал Марио, проблема была в UTF 8-BOM. Если кто-то есть эта проблема, я рекомендую вам использовать этот код:

<?php 
// substitua pelo caminho para o arquivo que deseja limpar 
$file = "C:/wamp/www/wordpress/wp-content/themes/basic-gray/lib/langs.php"; 
print removeUTF8BOM($file) ? 'BOM removido!' : 'Não havia BOM a ser removido...'; 

function removeUTF8BOM($fil) { 
$newcontent = ''; 
$first = false; 
$fh = fopen($fil, 'r'); 
    while($part = fread($fh, 1024)) { 
    if(!$first) { 
     if(preg_match('/^\xEF\xBB\xBF/', $part)) { 
     $newcontent = preg_replace('/^\xEF\xBB\xBF/', "", $part); 
     } else { 
     fclose($fh); 
     return false; 
     } 
    $first = true; 
    } else $newcontent .= $part; 
    } 
fclose($fh); 
$fh = fopen($fil, 'w'); 
fwrite($fh, $newcontent); 
fclose($fh); 
return true; 
} 
?> 

(http://www.caugb.com.br/2009/07/remover-o-bom-de-arquivos-em- utf-8 /)