创建电子邮件解析器作为服务?

时间:2012-04-30 15:17:21

标签: parsing email network-programming

我想弄清楚如何创建电子邮件解析器。我从技术上理解如何做到这一点,但我无法弄清楚实现细节。

因此,用户向地址发送电子邮件,邮件服务器接收并且我的应用程序根据主题,内容对其进行解析并将其放入存储桶(电子邮件帐户或数据库)中,然后我可以对其进行操作。

那么我是否使用现有的邮件服务器软件(如我们已经运行的Zimbra)或者我是否创建了一个可以侦听端口25的应用程序,并且具体做了我需要的东西? (意思是没有邮箱服务器软件在这个盒子上运行等)

我的目标是根据我自己发送的电子邮件,以自动方式创建一系列个人使用的组织工具。

2 个答案:

答案 0 :(得分:1)

在端口25上编写要侦听的内容并充当SMTP服务器将会涉及到您想要的内容并且可能过度。

我认为有两个主要选择。第一种方法是保留现有的邮件服务器,然后通过IMAP(或POP3)轮询该邮件服务器上的帐户以检索电子邮件,然后使用脚本处理它们。你喜欢哪种语言并不重要,因为有些库可以处理IMAP连接,然后用大多数语言解析电子邮件。

或者,您可以查看像http://CloudMailin.com这样的服务。它将收到电子邮件并将其发送到您可以通过JSON格式的http帖子创建的Web应用程序。

答案 1 :(得分:0)

我会选择一个用于轮询邮箱的python脚本(基于cron作业)。 Python允许您非常轻松地访问IMAP,并具有强大的正则表达式功能来解析电子邮件内容。

尝试类似:

import imaplib, email
import re

M= imaplib.IMAP4_SSL('imap.gmail.com')
M.login('user', 'pass')

M.select('Imap_folder')

typ, data = M.search(None, 'FROM', '"*"')

for num in data[0].split():
   typ, data = M.fetch(num, '(RFC822)')
   email_body = data[0][1] # getting the mail content
   mail = email.message_from_string(email_body) # parsing the mail content to get a mail object
   foo = re.compile("your regular expr here", re.MULTILINE)
   res = foo.search(email_body)