Cliente de e-mail Linux que pode acionar um script PHP para analisar o e-mail recebido

0

Existe algum cliente de e-mail baseado em texto simples que eu possa usar para disparar um script PHP para analisar os e-mails recebidos dos usuários?

Eu tenho um aplicativo PHP que envia e-mails para os usuários e seria bom se o aplicativo pudesse analisar a resposta dos usuários e armazená-los no banco de dados.

Estou usando o Centos 6 com o Postfix e o PHP envia e-mails usando o PHPMailer. Nenhum sistema X Window instalado.

    
por John Doe 27.06.2013 / 10:39

4 respostas

2

Sua pergunta é um pouco confusa, pois você se refere a um cliente de e-mail baseado em texto e um aplicativo PHP e especifica que "o aplicativo" (ou seja, seu aplicativo PHP) armazena e-mail (ou dados extraídos dele) em um banco de dados.

Você pode e provavelmente deve separar seu aplicativo de envio de seu aplicativo de processamento de resposta. O processamento de resposta pode ser feito chamando qualquer script do procmail, para isso você precisa de um arquivo .procmailrc no diretório inicial do usuário receptor que possui o seguinte:

:0
* ^Subject:.*[response-email]
| /path/to/your_script

Você pode deixar de fora a linha Assunto se quiser que todos os e-mails para esse endereço de e-mail sejam processados ou usar critérios de seleção diferentes.

Quanto a your_script , não sei de nenhum cliente de email de linha de comando que coloque diretamente seu material em um banco de dados. Como você provavelmente deve testar a resposta de qualquer maneira (se não for para extrair alguns campos de banco de dados extras, pelo menos para jogar fora o spam) você pode querer escrever your_script no PHP usando PECL para analisar seu conteúdo e armazená-lo em seu banco de dados. (Claro que você pode usar outros idiomas com os quais esteja familiarizado também).

Se você estiver usando o postfix para receber e-mails na máquina em que esse script é executado, não deixe de chamar procmail em /etc/postfix/main.cf:

mailbox_command = procmail -a "$EXTENSION"
    
por 27.06.2013 / 10:57
1

... Ok, vou dar alguns passos para trás e explicar algumas coisas sobre como o e-mail funciona sob o capô, porque, a julgar pelas suas perguntas nos comentários, parte do seu problema com essa questão é que você não Entenda como as coisas funcionam, o que, por sua vez, está causando equívocos sobre o que você precisa fazer para realizar o que deseja.

Primeiramente, alguns termos básicos:

  • Um agente de usuário de email (MUA) é o que você chamaria de "cliente de email". Sua finalidade é permitir que um usuário envie emails ou recupere-os de uma caixa de correio e os leia. Tecnicamente falando, quando o seu script PHP envia um e-mail, ele age como um MUA.
  • Um Agente de Transferência de Correio (MTA, Mail Transfer Agent) está preocupado apenas com o negócio de mover email de um lugar para outro. Hoje em dia, isso geralmente inclui garantir que o e-mail entregue seja algo que deve ser transmitido antes, mas isso está fora do escopo por enquanto. Pense nisso como um correio.
  • Um Agente de Entrega de Mensagens (MDA) serve como o ponto final de um pipeline; Quando um MTA determina que um e-mail específico deve ser entregue localmente, ele solicita que o MDA lide com as coisas.

Quando você envia um e-mail, o que acontece é o seguinte:

  1. O MUA gera o email, seja via script ou de entrada do usuário, certifica-se de que está encapsulado adequadamente de acordo com os padrões internacionais (o equivalente a escrever o endereço no local correto e adicionando a quantidade certa de carimbos) seu MTA configurado. Praticamente todas as variantes UNIX fora dos minúsculos sistemas embarcados realmente terão um MTA local em execução, especificamente para que qualquer coisa que precise enviar e-mail tenha uma maneira de fazer isso sem precisar falar SMTP.
  2. O MTA recebe a mensagem e, após certificar-se de que ela deve manipular a mensagem, analisa o endereço de destino e decide o que fazer com ele. Se não for feito para ser tratado localmente, ele passará a mensagem para outro MTA que, até onde sabe, é o local apropriado para enviar essa mensagem em particular.
  3. Dependendo da configuração real, o passo 2 pode repetir algumas vezes - por exemplo, máquina local - > smarthost remetente do ISP para o correio de saída - > filtro anti-vírus / anti-spam ISP do receptor - > Principal servidor de correio de entrada do ISP.
  4. Por fim, supondo que as coisas estejam configuradas corretamente, o loop na etapa 3 terminará em um MTA que seja capaz de entregar localmente o email ou autoritariamente informar ao remetente que seus emails não serão aceitos.
  5. Este MTA final entregará o email ao MDA especificado, que processará a entrega real. Isso é feito normalmente , largando-o na caixa de correio do destinatário, mas pode ser configurado para ser quase qualquer coisa.

O que você está pedindo é realizado no passo 5; o que você deseja fazer é configurar uma regra de entrega para esse endereço de email específico, em vez de entregá-la em uma caixa de correio para leitura por humanos, canalizar o email em um programa local (que não precisa ser esse script PHP específico ou de fato, qualquer script PHP - desde que seja executável), que por sua vez analisará a entrada de e-mail e a usará para preencher uma entrada em um banco de dados.

A resposta da Anthon aborda a maneira mais conveniente de configurar o canal, supondo que você tenha a capacidade de adicionar endereços de e-mail e usuários associados em seu servidor de e-mail. Caso contrário, você precisará ser mais criativo, mas sem mais informações sobre os acordos entre você, seu provedor de serviços de Internet e o nome de domínio do seu site, não podemos oferecer muito mais conselhos do que isso.

    
por 08.02.2017 / 11:13
0

Talvez você esteja atrás de uma extensão / classe do PHP:

link

link

link

    
por 27.06.2013 / 11:01
0

Eu não consegui, se você quiser analisá-lo em sua aplicação PHP ou apenas no servidor. Ambas as variantes são possíveis sem usar qualquer cliente de email.

1) Bash / SH ou outra linguagem de script. Algo assim:

#!/bin/bash

MyUSER="SET-MYSQL-USER-NAME"
MyPASS="SET-PASSWORD"
MyHOST="localhost"
MyDB="SET-DB"

for mFile in 'grep -iR 'WHAT TO FIND???' .'
do
  # here do something with your e-mail z.B:
  mysql -u $MyUSER -h $MyHOST -p$MyPASS MyDB << EOF
      insert into ...
      values ...;
  EOF
done

2) Ou analisador no lado da aplicação (em PHP), o que é bastante simples. Dê uma olhada nesta biblioteca: link

    
por 27.06.2013 / 11:29