如何将电子邮件发送到Django?

时间:2012-01-11 01:19:03

标签: django pipe email-integration

我是销售LED发光玩具的两人业务的一部分,其中一个方面是处理支持请求。我有一台运行exim4和DJango的服务器并且有电子邮件工作,这样如果用户向support@myhost.com发送电子邮件,我就可以收到电子邮件并回复。

我想开发一些更加整洁的东西来跟踪特定支持请求的电子邮件链。

为此,我考虑使用支持电子邮件过滤器中的规则来管理电子邮件的输出:

pipe /usr/bin/email_to_django_script

我不确定的是如何最好地实现将电子邮件内容转换为DJango可以处理的内容的最后一步。

这样做的最佳方法是什么?使用curl -d的脚本是一个明智的选择还是有更好/更少复杂的方式?

2 个答案:

答案 0 :(得分:2)

您可以将电子邮件服务器的输出传输到management command。例如,我有一个文件/inquiries/management/commands/proc_email.py。我有一个Command课程,handle()方法可以获取环境中的大部分电子邮件,以及来自STDIN的电子邮件正文:

from_email = strip_tags(os.environ.get('SENDER', None))
to_email = strip_tags(os.environ.get('RECIPIENT', None))
emailMessage = email.message_from_string(''.join(sys.stdin.readlines()))

还有其他代码,但这就是我从中获取重要部分的方法。然后,您可以将其传输到ORM对象中,稍后再从网站访问它。

然后通过/path/to/project/manage.py proc_email访问。

根据您的电子邮件服务器,您还可以使用加号来确保回复返回到同一地址。例如,我将Reply-To标头设置为inquiry+12345@whatever.com。邮件服务器(postfix)然后将其转储到EXTENSION下的环境中。如果没有提供号码,我只需创建一个新的查询,而不是附加到现有的查询。

答案 1 :(得分:1)

不完全是纯Django解决方案,但我建议您查看Lamson Project。它是一个用Python编写的电子邮件服务器,您可以使用它来构建您所描述的电子邮件应用程序。我也可以与Django ORM集成。 http://lamsonproject.org/docs/hooking_into_django.html