2009-11-26 21 views
5

Sto scrivendo un gestore di pipe dell'help desk per instradare le e-mail in arrivo come risposta del ticket dell'helpdesk. Alcune e-mail stanno arrivando perfettamente bene, altre stanno arrivando come un guazzabuglio del testo e = 3D è tutto mungato in una stringa gigante. Qualcuno ha un'idea su come decodificarlo in testo normale.Zend_Mail e = 0D = 0A = 3D = 3D = 3D = 3D = 3D

Per avere un riferimento, questo è posta la mia funzione di parser:

public function parseEmailMessage(Zend_Mail_Message $msg) 
{ 
    if ($msg->isMultiPart()) { 
     $arrAttachments = array(); 
     $body = ''; 
     // Multipart Mime Message 
     foreach (new RecursiveIteratorIterator($msg) as $part) { 
      try { 

       $mimeType = strtok($part->contentType, ';'); 

       // Parse file name 
       preg_match('/name="(?<filename>[a-zA-Z0-9.\-_]+)"/is', $part->contentType, $attachmentName); 

       // Append plaintext results to $body 
       // All other content parts will be treated as attachments 
       switch ($mimeType) { 
        case 'text/plain': 
         $body .= trim($part->getContent()) . "\n"; 
         break; 
        case 'text/html': 
         $body .= trim(strip_tags($part->getContent)); 
         break; 
        default: 
         $arrAttachments[] = array(
          'attachment_mime' => $mimeType, 
          'attachment_name' => $this->filterFileName($attachmentName['filename']), 
          'base64data' => trim($part->getContent()) 
         ); 
       } 

      } catch (Zend_Mail_Exception $e) { 
       // ignore 
      } 
     } 

     return array($body, $arrAttachments); 
    } else { 
     // Plain text message 
     return array(trim($msg->getContent()), array()); 
    } 
} 
+4

scusa, dovevo venire qui per vedere cosa fosse = 0D = 0A = 3D = 3D = 3D = 3D era circa. –

risposta

5

mi prendo una supposizione che in qualche modo il tipo di contenuto non è specificato correttamente e Zend non sa come decodificarlo. So di averlo già visto prima, ma non riesco a ricordare dove o come è stato "risolto".

Sembra che il quoted-stamp sia trattato come testo normale.

+1

Questo succede anche ad alcuni dei nostri script - I Mac di Apple sono la colpa se ricordo correttamente –

+1

esattamente quello che stavo cercando. la funzione in php è chiamata quoted_printable_decode(); mi hai salvato ore di frustrazione, grazie – Mark