A melhor maneira de lidar com o processamento/descodificação de E-mail em PHP?

Neste momento, estou a usar o código mímico da biblioteca de pêra.php para analisar os e-mails recebidos. Parece ter um monte de problemas e não consegue descodificar um monte de mensagens, então eu gostaria de substituí-lo por algo melhor.

Estou à procura de algo que seja capaz de separar adequadamente partes da mensagem, tais como, de, corpo, etc. Idealmente, ele seria capaz de lidar com todos os métodos de codificação comuns, tais como base64, uuencode, printable citada, etc.

em situações em que ambos versões de texto e html da mesma mensagem estão contidas em um único e-mail, eu preferiria que ele soubesse a diferença entre eles para que eu pudesse escolher qual parte eu gostaria de exibir.

Não estou preocupado com os anexos neste momento, mas seria bom ter conhecimento deles, caso eu queira implementar isso no futuro.

Eu vi que o PHP tem um grupo de funções que começam com a palavra imap que parecem que podem fazer o que eu gostaria, mas eu não tenho certeza sem a experimentá-los.

actualmente, estou a descodificar as mensagens em voo no PHP, e é por isso que estou à procura de uma solução de substituição do PHP.

Alguém tem alguma experiência com isto que me possa indicar a direcção certa? Detestaria começar a usar algo que acabasse por não fazer o que preciso a longo prazo.

Author: Sgraffite, 2011-01-18

6 answers

Engraçado perguntares... Actualmente, estou a trabalhar num sistema de notificação simples. Acabei de terminar o Gestor de saltos com o I use Zend_ mail para implementar. Tem praticamente todas as características que procura... você pode se conectar a uma caixa de correio (POP3, IMAP, Mbox e Maildir) e puxar mensagens dela, bem como operar em todas essas mensagens. Ele lida com mensagens multipartidárias, mas as peças podem ser difíceis de trabalhar. Tive dificuldade em descobrir qual era a parte anexou a parte original da mensagem no NDR que eu estava trabalhando, mas eu tenho um sentimento que eu perdi algo na documentação. Não sei como lida com a codificação, porque o meu uso era bastante simples, mas tenho a certeza que tem provisões para todas as codificações que mencionou. Verifica os documentos e procura na API.
 5
Author: prodigitalson, 2018-03-19 17:32:57

Desenvolvi recentemente um analisador de correio PHP e tenho-o usado na produção.
Eu tenho muito feliz com ele e alguns desenvolvedores tem bifurcado:

Https://github.com/plancake/official-library-php-email-parser

 12
Author: dan, 2011-06-16 15:47:08
Sei que esta pergunta já tem quatro anos... mas eu acabei precisando de uma biblioteca de análise de correio e não estava satisfeito com nenhuma das opções disponíveis. Eu queria algo confiável, compatível com PSR-2, instalável via compositor.
composer require zbateson/mail-mime-parser

Ele faz uso de fluxos que lhe permitem passar uma conexão SMTP (para analisar um e-mail e armazenar em um banco de dados, por exemplo), ou um arquivo, ou um fluxo de memória... o que quiseres. Também não guarda todas as informações na memória. ainda não testei este bit com um conjunto de dados grande o suficiente, mas em teoria e-mails com anexos muito grandes não vai usar toda a memória do PHP.

Https://github.com/zbateson/MailMimeParser

Vê o wiki para um guia e a API... e se você encontrar bugs/typos ou ver melhorias, por favor contribua:)

 5
Author: Zaahid, 2016-04-05 06:38:45

Pedi ao analisador de php-mime-mail para corrigir todos os problemas: Fork do analisador de php-mime-mail-parser

Mais de 52 testes e 764 afirmações Cobertura do Código: linhas a 100%, funções e métodos a 100%, Classes A 100% e características

Você precisa do pacote PECL MailParse para usá-lo, mas a embalagem é sem problema e totalmente testado.

 4
Author: eXorus, 2014-06-22 13:18:33
Para ser mais completo, vou tentar. http://code.google.com/p/php-mime-mail-parser/ - é uma embalagem em torno do PHP MailParse, que precisa de ser instalado.
 2
Author: Slawa, 2012-10-04 13:32:19

De momento, também estou à procura de uma biblioteca de análise de E-mail robusta e robusta para MIME e estou a analisar seriamente o componente Mail dos componentes eZ. Mas, se estás à procura de algo que o torne tão fácil como echo $email->text; ou echo $email->html;, Como eu estava, vais ficar desapontado. Na verdade, Agora eu não acho que essa simplificação seja sequer possível, devido à forma como o MIME funciona. Mas parece ser a melhor opção no mundo PHP.

Comecei a trabalhar no meu ... o projecto actual com o componente Zend_ mail, mas quando chegou a altura de escavar de facto dentro das partes de E-mail e dos cabeçalhos codificados, O Zend_ mail deixa-o praticamente ao frio. Você precisa decodificar a maioria de si mesmo, o que não é nada divertido.

Quanto a extensão do IMAP, o seu objectivo é lidar com a recuperação de mensagens da sua caixa de correio, não com a descodificação MIME. Embora, ele tem alguma função de descodificação útil que você pode precisar. Mailparse extensão PECL, por outro hand, lida exactamente com esse conjunto de problemas. Eu ainda não tentei, mas parece que você precisa escrever um monte de código para realmente chegar aos dados que você quer.

 1
Author: nnc, 2011-01-29 03:02:34