【问题标题】:In Django, I want to insert a database record by sending myself an email?在 Django 中,我想通过向自己发送电子邮件来插入数据库记录?
【发布时间】:2011-02-06 16:42:57
【问题描述】:

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

这可能吗?我有一个带有SliceHost 的切片(基本上是一个专用服务器),所以我可以完全控制要安装的内容等。我为此使用 Python/Django/MySQL。

您有什么想法可以采取哪些步骤来实现这一目标吗?

【问题讨论】:

    标签: python mysql django email


    【解决方案1】:

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

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

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

    缺点是您需要一些时间才能看到任务,因为该作业仅每 X 分钟或秒执行一次。

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

    谷歌搜索 Django +scheduler 将帮助您入门。

    也可以看看this StackOverflow thread,不用重新发明轮子:)

    【讨论】:

      【解决方案2】:

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

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

      www.lamsonproject.org

      特洛伊

      【讨论】:

      • 非常酷。如果您希望将其与 Django 集成,Lamson 似乎是一个完美的工具“而不是奇怪的平面文件“数据库”和哈希表存储,Lamson 使用 Python 所做的任何事情来存储数据。您可以使用以下所有内容来存储数据在 Lamson:Django 的 ORM..." 等
      【解决方案3】:

      我过去解决此问题的一种方法是使用 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

      我应该指出,这不是最简单的解决方案,但它可以扩展,并且非常可靠。

      【讨论】:

        【解决方案4】:

        我不会为此专注于 Django。

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

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

        【讨论】:

        • 我过去使用 procmail 处理类似的事情。使用它来运行使用 Django ORM 的脚本。
        猜你喜欢
        • 2017-03-05
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 1970-01-01
        • 2022-10-05
        相关资源
        最近更新 更多