2009-04-25 8 views
2

私は登録時にメールアドレス([email protected]など)を割り当てられるように自分のウェブサイトのユーザーに機能を提供したいと思いますが、これらのメールを実際にサポートすることは実際には実現可能ではないと思います通常はウェブメールプログラムを使用してアカウントを作成します。私はまた、私のウェブホストがそれで涼しいかどうかわからない。私が本当に望んでいるのは、サイト内のメッセージングのために大部分を占めるが、実際にメールアドレスを入力できるようにするため、このメールのシームレスな統合をウェブサイトのより大きなシステムに組み込むことができるということです。私が代わりにしたいのは、mydomainの下にキャッチオールのアカウントを持ち、このメールに受信メールを見て、送信先を確認して、システムのユーザーにメッセージを追加することです。電子メールをPythonスクリプトにリダイレクトする最良の方法は何ですか?

質問:

1)これは正しいアプローチですか?自分のドメインに自由にメールを割り当てることができるホストを取得するのはどれくらいの費用がかかりますか?私は現在、WebFactionの共有ホスティングを使用しています。
2)大丈夫ですが、このキャッチをすべてのアカウントをPythonスクリプトにルーティングする最も良い方法は何ですか?私はforforwardについて読んだことがありますが、UNIXのものはあまりよくありません。私がそれを理解したら、Djangoのモデル機能を使用してユーザーに新しいメッセージを追加できるように、スクリプトを "Django環境"にする方法はありますか?
3)これを簡単にするためにDjangoができることはありますか?
4)電子メールアドレスの解析に役立つツールがPythonにはありますか?どのように機能するのですか?

+0

Duplciate:http://stackoverflow.com/questions/484940/achieving-emailing-between-website-users-without-mailing-server-configuring/ –

答えて

0

が、私は実際にそれが実際にこれらすべての の電子メールをサポートするために実行可能な であるとは思わない私はここにあなたの基本前提が間違っていると思い ウェブメールプログラム

を通じて正常に占めています。ご覧のように、ほとんどの 'webmail'プログラムは、バックエンドメールシステム(postfixなど)のフロントエンド(またはクライアント)です。あなたのウェブホストがどのように設定されているかを確認する必要があります。これらのアカウントをプログラムで作成してSquirrelMailやRoundCubeなどの通常のウェブメールインターフェイスを使用させることはできません。たとえば、私のウェブホスト(bluehost)は私に2500の電子メールアカウントを許可しています - 私はあなたのどれくらいのものが許されているのかよくわかりませんが、私は月に何ドルか無制限にアップグレードすることができます。私は組み込みの電子メール処理機能を使用する方がより堅牢な方法だと思います。

0

あなたの質問はthis questionに似ています。

django-messagesのようなプロジェクトを使用して、ユーザー間のメッセージングを処理します。

ユーザがあなたのDjangoサイト外からメールを受信できるようにするには、電子メールの受信と保存を処理するためのMTAを設定し、procmailのようなものをDjangoメッセージデータベースに取り込みます。

一般的なMTAは、postfix,eximおよびqmailです。 Pythonベースのものthis question

Djangoサイトの新規ユーザーごとに有効な電子メール受信者を作成して、MTAによって拒否されないように、独自のコードをロールバックする必要があります。直接あなたの質問に答えるために

4

1,2)WebFactionのウェブサイトでthis FAQをチェックしてください。それはあなたの選択したスクリプトに着信電子メールを簡単にルーティングする方法を説明します。電子メールアドレスを作成するときには、ユーザー名を指定して、ドメインに送信されたものがすべて送信されるキャッチオールメールにすることはできません。

3)他の人が示唆しているように、django-messagesをチェックできますが、Django Plugablesの方が良いかもしれません。

4)email.parserモジュールをチェックすると、電子メールの構文解析の厄介な部分のほとんどが処理されます。

2

同様の質問に対してmy answerを参照してください。 Djangoの電子メールパーサーを使い始めるための基本的なコードがすべてあります。

編集:2番目の考えでは、ここでのコードは次のとおりです。

受信メールを処理するために、Pythonのpoplibimaplibを使用していますjutda-helpdeskと呼ばれるアプリがあります。あなたはPOP3またはIMAPアクセスのどこかにアカウントを持っていなければなりません。

これは、彼らのget_email.pyから構成されている:

def process_mail(mb): 
    print "Processing: %s" % q 
    if mb.email_box_type == 'pop3': 
     if mb.email_box_ssl: 
      if not mb.email_box_port: mb.email_box_port = 995 
      server = poplib.POP3_SSL(mb.email_box_host, int(mb.email_box_port)) 
     else: 
      if not mb.email_box_port: mb.email_box_port = 110 
      server = poplib.POP3(mb.email_box_host, int(mb.email_box_port)) 
     server.getwelcome() 
     server.user(mb.email_box_user) 
     server.pass_(mb.email_box_pass) 

     messagesInfo = server.list()[1] 

     for msg in messagesInfo: 
      msgNum = msg.split(" ")[0] 
      msgSize = msg.split(" ")[1] 
      full_message = "\n".join(server.retr(msgNum)[1]) 

      # Do something with the message 

      server.dele(msgNum) 
     server.quit() 

    elif mb.email_box_type == 'imap': 
     if mb.email_box_ssl: 
      if not mb.email_box_port: mb.email_box_port = 993 
      server = imaplib.IMAP4_SSL(mb.email_box_host, int(mb.email_box_port)) 
     else: 
      if not mb.email_box_port: mb.email_box_port = 143 
      server = imaplib.IMAP4(mb.email_box_host, int(mb.email_box_port)) 
     server.login(mb.email_box_user, mb.email_box_pass) 
     server.select(mb.email_box_imap_folder) 
     status, data = server.search(None, 'ALL') 
     for num in data[0].split(): 
      status, data = server.fetch(num, '(RFC822)') 
      full_message = data[0][1] 

      # Do something with the message 

      server.store(num, '+FLAGS', '\\Deleted') 
     server.expunge() 
     server.close() 
     server.logout() 

mbは、残りの部分はかなり明確にする必要があり、すべてのメールサーバー情報を格納するだけでいくつかのオブジェクトです。

poplibimaplibでメッセージの特定の部分を確認する必要があるかもしれませんが、うまくいけば十分です。

関連する問題