Ferramenta ou método para analisar um e-mail recebido, remover os dados e empurrar para um banco de dados [fechado]

2

há alguma ferramenta disponível que analise automaticamente um e-mail recebido para um endereço específico, retire os dados e insira-os em um banco de dados SQL?

O e-mail entraria pelo servidor do Exchange 2003 e estaria em um formato fixo conhecido, ou seja,

Name: Firstname

Número ID: nnnnnnn
etc
etc.

Idealmente, a solução precisaria operar no servidor e não no cliente. Qualquer conselho apreciado.

    
por Marko Carter 26.06.2009 / 17:30

3 respostas

2

Existe um software comercial que parece fazer isso:

Email2DB

  • Read and process messages from POP3, IMAP & Microsoft Exchange Servers

  • [...]

  • Easy extraction of any number of fields from the subject, message & headers. Update any data source including, Access, SQL Server, Oracle, MySQL, Access, ODBC.
    
por 26.06.2009 / 17:58
3

Eu sempre vi esse tipo de coisa com um pouco de código de cola. Um pequeno perl trabalharia para isso:

#!/usr/bin/perl -w
use strict;
use Net::POP3;
use DBI;

my $pop = Net::POP3->new('mail.server.com') or
        die "shit, I can't connect\n";

my $dbh = DBI->connect('DBI:mysql:databasename', 'username', 'password'
               ) || die "Could not connect to database: $DBI::errstr";


if ($pop->login( 'username' , 'pass' ) > 0) {
    my $msgnums = $pop->list;
    MESSAGE: foreach my $msgnum (keys %$msgnums) {
        my $msg = $pop->get($msgnum);

        my ( $firstName, $lastName, $idNum );

        if( $msg =~ /^Name:\s+([a-zA-Z]+)\s+([a-zA-Z]+)/){
            $firstName = $1;
            $lastName = $2;
        }
        if ( $msg =~ /^ID Number:\s+([0-9]+)/ ){
            $idNum = $1;
        }

        $dbh->do('INSERT INTO exmpl_tbl VALUES( ? , ? , ?)', undef, ($firstName, $lastName, $idNum));

        $pop->delete($msgnum);
        next MESSAGE;

    }
}

$pop->quit;
exit 0;
    
por 26.06.2009 / 17:56
2

Se você quiser jogar com um projeto de código aberto, dê uma olhada no Archiveopteryx ( link ). Ele tem um esquema de armazenamento de dados realmente baseado em SQL normalizado para e-mail (usando o PostgreSQL). Você poderia combiná-lo com, digamos, "fetchmail" e servidor POP3 no Exchange para criar um arquivo de mensagens baseado em SQL que pudesse ser reportado e pesquisado com ferramentas de relatório baseadas em ODBC.

    
por 26.06.2009 / 18:46