2012-01-11 11 views
0

私はLEDグローのおもちゃを販売している二人のビジネスの一員であり、この一面はサポートリクエストを処理しています。 exim4とDJangoを実行しているサーバーがあり、ユーザーが[email protected]に電子メールを送信すると電子メールを受け取り応答することができるように電子メールが動作します。電子メールをDjangoにパイプする方法は?

私は、特定のサポート要求の電子メールチェーンを追跡するために少し丁寧に何かを開発したいと思います。

pipe /usr/bin/email_to_django_script 

は何があるのか​​不明だ最善の方法への最後のステップについて移動する:これを行うには

、私は私のサポートのメールのフィルタにルールを使用して私の電子メールの出力をパイプを考えていました実際に電子メールコンテンツをDJangoに処理させることができます。

これを行うにはどのような方法が最適ですか? curl -dを使用しているスクリプトが賢明な選択肢になるのでしょうか、それともより複雑な方法がありますか?

答えて

1

まったく純粋なDjangoソリューションではありませんが、私はLamson Projectを見てみることをお勧めします。これはPythonで書かれたメールサーバで、あなたが記述しているもののような電子メールアプリケーションを構築するのに使うことができます。私はDjango ORMと統合することもできます。 http://lamsonproject.org/docs/hooking_into_django.html

+0

+1のLamsonについては分かりませんでした:) –

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オブジェクトにパイプし、後でWebサイトからアクセスできます。

/path/to/project/manage.py proc_emailからアクセスします。

メールサーバーによっては、プラスアドレスを使用して返信が同じアドレスに戻ってくることを保証することもできます。たとえば、私のReply-Toヘッダーは[email protected]に設定されています。メールサーバ(postfix)はEXTENSIONの環境にこれをダンプします。番号が指定されていない場合は、既存のInquiryに付けるのではなく、新しいInquiryを作成するだけです。

+0

eximでpipeコマンドを使用してmanage.pyコマンドに渡すことができます:http://www.exim.org/exim-html-current /doc/html/spec_html/filter_ch03.html –

関連する問題