是否有任何工具可以自动将传入的电子邮件parsing到特定的地址,去掉数据并将其插入到SQL数据库中?
电子邮件将通过交换2003服务器进来,并将在一个已知的固定格式,即
名字:姓氏
ID号码:nnnnnnn
等等
等等
理想情况下,解决scheme需要在服务器上运行,而不是客户端。 任何意见赞赏。
有一个商业软件,似乎这样做:
Email2DB
阅读并处理来自POP3,IMAP和Microsoft Exchange Server的邮件
[…]
- 轻松从主题,消息和标题中提取任意数量的字段。 更新任何数据源,包括Access,SQL Server,Oracle,MySQL,Access,ODBC。
我总是看到这样的事情用一点胶水代码完成。 有一点Perl会为此工作:
#!/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;
如果你想玩一个开源项目,请看看Archiveopteryx( http://www.archiveopteryx.org/ )。 它有一个真正的,非常甜的规范化的基于SQL的电子邮件数据存储模式(使用PostgreSQL)。 您可以将它与Exchange上的“fetchmail”和POP3服务器结合使用,以创build一个基于SQL的邮件存档,您可以使用基于ODBC的报告工具来报告和search。