首页 > 解决方案 > 电子邮件服务器在附加到 django 的 postgresql 上运行 sql 查询

问题描述

我将提供一些关于我的设置的信息,尽管这个问题可能有点武断。

我正在使用托管在 heroku 上的 django 和 django-rest-framework 作为颤振应用程序的后端。我正在为数据库使用 heroku postgres 插件。

我的目标是建立用户电子邮件验证系统,但由于我不会进入的原因,这种方式有点不合常规。

我想让用户向指定的地址发送电子邮件,并在每封收到的电子邮件上运行一个简单的更新 sql 查询以将该用户设置为活动状态。查询不需要帮助。

我正在寻找可能使这成为可能的电子邮件服务器的建议。如果我可以使用 django ORM 来做到这一点,那就更好了,但不是必需的。

我一直在研究 Outlook 上的 vba,但 Office 365 以成本为代价推出了很多我不感兴趣的功能。如果你能指出我制作 vba 宏以完成工作的正确方向,那就太好了,但欢迎其他想法。

任何建议表示赞赏。谢谢您的帮助。

标签: djangoemaildjango-rest-frameworkoffice365

解决方案


一种选择是将入站电子邮件路由到 Mailgun、Mandrill、Postmark 等服务。这些服务能够将入站电子邮件转换为对应用程序上的 webhook 发出的请求。因此,您可以将入站电子邮件视为 Web 请求。anymail是一个很好的 Django 库,可以跨多个提供者处理此问题。

设置好 webhook 后,您就可以访问普通的 Django 应用程序和 ORM。这应该允许你做你想做的事。

来自anymail 的接收邮件文档

from anymail.signals import inbound
from django.dispatch import receiver

@receiver(inbound)  # add weak=False if inside some other function/class
def handle_inbound(sender, event, esp_name, **kwargs):
    message = event.message
    print("Received message from %s (envelope sender %s) with subject '%s'" % (
          message.from_email, message.envelope_sender, message.subject))

推荐阅读