我是销售LED发光玩具的两人业务的一部分,其中一个方面是处理支持请求。我有一台运行exim4和DJango的服务器并且有电子邮件工作,这样如果用户向support@myhost.com发送电子邮件,我就可以收到电子邮件并回复。
我想开发一些更加整洁的东西来跟踪特定支持请求的电子邮件链。
为此,我考虑使用支持电子邮件过滤器中的规则来管理电子邮件的输出:
pipe /usr/bin/email_to_django_script
我不确定的是如何最好地实现将电子邮件内容转换为DJango可以处理的内容的最后一步。
这样做的最佳方法是什么?使用curl -d的脚本是一个明智的选择还是有更好/更少复杂的方式?
答案 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