我正在尝试讨论如何创建电子邮件解析器。我从技术上了解如何做到这一点,但我无法弄清楚实现细节。
因此,用户将电子邮件发送到一个地址,邮件服务器接收,我的应用程序根据主题、内容对其进行解析,并将其放入存储桶(电子邮件帐户或数据库)中,然后我就可以对其进行操作。
那么我是否使用现有的邮件服务器软件(例如我们已经运行的 Zimbra),或者我是否创建一个侦听端口 25 并专门执行我需要的应用程序?(意味着此框上没有运行邮件服务器软件等)
我的目标是根据我自己发的电子邮件,以自动化的方式为自己创建一系列供个人使用的组织工具。
编写一些东西来侦听端口 25 并充当 SMTP 服务器将涉及,并且对于您想要的内容来说可能矫枉过正。
我认为有两个主要选择。第一种方法是保留现有的邮件服务器,然后通过 IMAP(或 POP3)轮询该邮件服务器上的帐户以检索电子邮件,然后使用脚本处理它们。你熟悉哪种语言并不重要,因为有库可以处理IMAP连接,然后用大多数语言解析电子邮件。
或者,您可以查看像 http://CloudMailin.com 这样的服务,为您执行此操作。它将接收电子邮件并将其发送到一个 Web 应用程序,您可以通过 http 帖子以类似 JSON 格式创建该应用程序。
我会选择轮询邮箱的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)