Meilleur moyen de gérer les e-mail d'analyse et de décodage en PHP?
Actuellement, je suis à l'aide de la POIRE de la bibliothèque mimeDecode.php pour l'analyse des e-mails entrants. Il semble avoir beaucoup de questions et ne parvient pas à décoder un grand nombre de messages, donc je voudrais le remplacer par quelque chose de mieux.
Je suis à la recherche de quelque chose qui est en mesure de bien séparer les parties du message, comme à, de, corps, etc. Idéalement il doit être capable de gérer toutes les méthodes de codage tels que base64, uuencode, quoted printable, etc.
Dans les situations où les deux texte brut et html versions d'un même message sont contenus dans un seul e-mail, j'ai l'idéal serait de connaître la différence entre eux afin que je puisse choisir la partie que je souhaite afficher.
Je ne suis pas inquiet à propos des pièces jointes à ce point dans le temps, mais il serait bien qu'il ait connaissance d'eux au cas où je veux en œuvre que dans l'avenir.
J'ai vu PHP a un groupe de fonctions qui commencent par le mot imap qui apparaissent, ils peuvent faire ce que je voudrais, mais je ne suis pas sûr sans les essayer.
Actuellement, je suis en train de faire à la volée de décodage des messages en PHP, c'est pourquoi je suis à la recherche d'un PHP solution de remplacement.
Quelqu'un a une expérience avec ce qui pourrait me diriger dans la bonne direction? Je déteste commencer à utiliser quelque chose qui finirait pas de faire ce dont j'ai besoin sur le long terme.
Vous devez vous connecter pour publier un commentaire.
C'est drôle que vous demandez... Im travaille actuellement sur un simple système de notification maintenant. J'ai tout juste terminé le Rebond Gestionnaire-je utiliser Zend_Mail à mettre en œuvre. Il a à peu près toutes les fonctionnalités que vous cherchez... vous pouvez vous connecter à une boîte aux lettres (POP3, IMAP, Mbox et Maildir) et tirez des messages à partir d'elle ainsi que de fonctionner sur tous ces messages.
Il gère des messages, mais la partie peut être difficile de travailler avec. J'ai eu un moment difficile de déterminer quelle partie a été jointe du message d'origine en partie dans le rapport de non-remise est je travaillais, mais j'ai un sentiment que j'ai raté quelque chose dans la documentation. Je ne suis pas sûr de savoir comment il gère l'encodage, parce que mon utilisation est assez simple, mais je suis sûr qu'il a des dispositions pour tous les encodages que vous avez mentionné. Découvrez les docs et parcourir l'API.
$m = new Zend_Mail_Message(array('raw' => $stringMessage));
Prendre un coup d'oeil à la classe réelle et la doc commentaires pour le constructeur afin de vérifier.$msg->hasHeader($header)
personnellement, je préférerais qu'il retour chez elle, null, false ou -1 au lieu d'avoir explicitement test...headerExists()
méthode et si oui, aller la chercher avecgetHeader()
J'ai récemment développé un mail de PHP analyseur et je l'ai utilisé sur la production.
Je suis très heureux avec elle et certains développeurs a fourche c':
https://github.com/plancake/official-library-php-email-parser
getAttachment()
genre de fonctions à tous.Je sais que cette question est de quatre ans maintenant... mais j'ai besoin d'un courrier analyse de la bibliothèque et n'était pas satisfait avec les options disponibles. Je voulais quelque chose de fiable, PSR-2 conforme, installable via composer.
C'est son propre analyseur, construit à partir du sol en place pour contourner les problèmes connus et les bugs dans d'autres implémentations. Il est testé et très largement utilisé.
La bibliothèque utilise Psr7 flux qui vous permettent de passer tout type de flux que vous le souhaitez. Il n'a pas également de stocker toutes les informations dans la mémoire -- des pièces jointes très volumineuses peuvent être retournés comme un ruisseau au lieu d'une chaîne si vous le souhaitez, de sorte que la mémoire n'est pas utilisé. De même que l'ensemble du message n'est jamais stocké directement dans la mémoire, seules les références à des ruisseaux, et les en-têtes sont conservés en mémoire.
https://github.com/zbateson/mail-mime-parser
Découvrez la site web pour un guide et de l'API... et si vous trouvez des bugs/fautes de frappe ou de voir des améliorations, n'hésitez pas à ouvrir un problème, ou de creuser à droite et à contribuer avec un pull request 🙂
J'ai forké le php-mime-mail-analyseur de corriger tous les problèmes : Fourche de php-mime-mail-analyseur
Plus de 52 tests et 764 affirmations
Code de la Couverture : 100% des lignes, 100% Fonctions et Méthodes, 100% des Classes et des Traits
Vous avez besoin de la PECL Paquet MailParse à l'utiliser, mais l'emballage est sans problème et entièrement testé.
Pour être complet, voici celui que je vais essayer. http://code.google.com/p/php-mime-mail-parser/ - c'est un wrapper autour de PHP MailParse, qui doit être installé.
Je suis actuellement à la recherche d'un facile à utiliser, robuste MIME email de l'analyse de la bibliothèque et je suis actuellement sérieusement à la recherche dans Mail composant de eZ Components. Mais, si vous êtes à la recherche de quelque chose qui va le rendre aussi facile que
echo $email->text;
ouecho $email->html;
, comme je l'ai été, vous serez déçu. En fait, maintenant, je ne pense pas que cette simplification est même possible, en raison de la façon MIME œuvres. Mais il ne semble pas comme la meilleure option là-bas dans le monde PHP.J'ai commencé à travailler sur mon projet actuel avec Zend_Mail composant, mais quand est venu le temps de creuser à l'intérieur de ces e-mail des pièces et codé en-têtes, Zend_Mail assez bien vous laisse dehors dans le froid. Vous avez besoin de faire la plupart de décodage de vous-même, ce qui n'est pas amusant du tout.
Comme pour IMAP extension PHP, sa destinée à traiter avec de la récupération des messages à partir de votre boîte aux lettres, pas le décodage MIME eux. Bien que, il ne avoir une certaine pratique de décodage de la fonction que vous pourriez avoir besoin. Mailparse Extension PECL, d'autre part, traite exactement de ce problème ensemble. Je n'ai pas encore essayé, mais il semble que vous avez besoin d'écrire beaucoup de code à réellement obtenir les données que vous souhaitez.