2009-11-26 8 views
5

Je suis en train d'écrire un gestionnaire de tuyau d'assistance pour rediriger les courriels entrants vers des réponses de ticket d'assistance. Certains e-mails arrivent parfaitement bien, d'autres arrivent comme un fouillis du texte et = 3D sont tous fusionnés en une seule chaîne géante. Est-ce que quelqu'un a une idée sur la façon de décoder cela en texte brut.Zend_Mail et = 0D = 0A = 3D = 3D = 3D = 3D = 3D

Pour référence, ceci est mon courrier fonction de l'analyseur:

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

désolé, a dû venir ici pour voir ce que le = 0D = 0A = 3D = 3D = 3D = 3D était d'environ. –

Répondre

5

Je vais prendre une supposition qui en quelque sorte le type de contenu n'est pas spécifié correctement et Zend ne sait pas comment le décoder. Je sais que j'ai déjà vu ça, mais je ne me souviens plus où et comment cela a été «résolu».

Il semble que quoted-printable soit traité comme du texte brut.

+1

Cela arrive à certains de nos scripts aussi - Apple Macs sont à blâmer si je me souviens correctement –

+1

exactement ce que je cherchais. la fonction dans php est appelée quoted_printable_decode(); tu m'as sauvé des heures de frustration, merci – Mark