在Django中,我想通过发送电子邮件来插入数据库记录?

时间:2010-04-11 11:55:11

标签: python mysql django email

我正在研究我的小应用程序的可能功能...我喜欢我可以发送电子邮件到特定电子邮件地址的想法,其中包含我需要完成的待办任务,这个将被我的Web应用程序读取并放入数据库中......所以,当我登录我的应用程序时,我通过电子邮件发送的待办事项将作为应用程序中的条目存在。

这可能吗?我有SliceHost切片(基本上是一个专用服务器)所以我完全可以控制安装什么等等。我正在使用Python / Django / MySQL。

有关采取哪些措施来实现这一目标的任何想法?

4 个答案:

答案 0 :(得分:5)

如果我要实现这一点,我会使用调度程序和作业来安排。

该作业将连接到邮件服务器(无论是POP3还是IMAP)并解析未读邮件(或作业未读的邮件)。基于此我将插入该记录。

你会得到两种类型的记录。已处理的邮件消息ID列表(因此您不会重新处理邮件)和任务列表。

缺点是在您看到任务之前需要一些时间,因为作业每隔X分钟或几秒钟执行一次。

如果这还不够好,我会寻求永久的IMAP连接,但你必须实现更多的错误处理;你不要每隔X分钟自动重试一次。

用于Django +调度程序的Google搜索将帮助您入门。

还可以查看this StackOverflow thread,无需重新发明轮子:)

答案 1 :(得分:2)

我需要完全相同的东西。我使用Lamson项目(用python编写)来转换电子邮件,根据规则将电子邮件转发到我的www.evernote.com和思考摇滚www.trgtd.com.au帐户,更新防火墙Web过滤规则,更新允许/拒绝我的垃圾邮件过滤器列表,读写数据库等......

我喜欢将其视为电子邮件服务器自动化和电子邮件应用程序开发。

www.lamsonproject.org

特洛伊

答案 2 :(得分:1)

我过去解决此问题的一种方法是使用qmail's .qmail个文件(docs)。

基本上你set up qmail并将你的电子邮件地址(为了便于使用,让我们假设proc@whatever.com是你的电子邮件地址)指向你的主目录。在该目录中,您设置了.qmail-proc文件来处理邮件。

这允许您在服务器上使用完整的SMTP服务器,包括垃圾邮件过滤,转发,别名,所有有趣的东西。然后,您可以将电子邮件中的数据传输到应用程序中。在你的情况下,我建议在Django中制作一个Mangement Command来处理电子邮件(我称之为proc_email)。因此,您的.qmail-proc可能如下所示:

/var/spool/mail/proc
| /www/django/myproject/manage.py proc_email

这会将电子邮件的副本存储在/var/spool/mail/proc中,然后将电子邮件传递给第二行的脚本。电子邮件本身通过sys.stdin传递给proc_email。只需从那里阅读电子邮件,并通过Django模型存储它。

如果以后需要处理不同地址的电子邮件,还可以设置指向主目录的别名,并为每个别名使用.qmail-<username>个文件。允许您在需要时将其他标志(例如每个别名的用户名)传递给proc_email

我应该注意到这不是最简单的解决方案,但它可以扩展,并且非常坚固。

答案 3 :(得分:0)

我不会专注于Django。

我会创建一个邮件服务器来捕获这些电子邮件。使用http://docs.python.org/library/smtpd.html

然后我会使用Django ORM根据收到的电子邮件更新数据库。