2009-04-27 5 views
1

La documentation pour l'envoi de mails avec Zend_Mail est géniale, mais la réception de mails est très pénible. Je veux actuellement obtenir la partie en texte brut et la partie html de l'email. En ce moment j'ai écrit une longue fonction qui passe par les parties et regarde ensuite les en-têtes et regarde si c'est imprimable ou base64 et je dois faire beaucoup pour obtenir l'information. Suis-je peut-être manquer une fonction avec laquelle je peux juste obtenir le texte en clair et le HTML de notre courrier?Zend_Mail lecture Mail

Répondre

4

AFAIK, les emails MIME n'ont pas de standard pour l'ordre des différentes parties (HTML, texte en clair, incorporés). Par conséquent, vous devez parcourir toutes les parties et obtenir les pièces dont vous avez besoin.

Mais parce que la structure de Zend_Mail est récursive, l'itération devrait être assez facile. Peut-être que vous pouvez partager votre code avec nous afin que nous puissions le commenter (s'il y a quelque chose à commenter)?

0

Essayez de mettre en œuvre quelque chose comme ceci:

/** 
* Returns the parts with plain text 
* 
* @param Zend_Mail_Message $message 
* @return array of Zend_Mail_Part 
*/ 
public function findTextParts(Zend_Mail_Message $message){ 

    $result = array(); 

    foreach (new RecursiveIteratorIterator($message) as $part) { 

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

     if ($token == 'text/plain') { 
      $result[] = $part; 
     } 

    } 

    return $result; 

}