2

私は Python/Django を学んでおり、私のお気に入りのプロジェクトは写真共有 Web サイトです。Posterous や Tumblr などのメール アドレスを使用して、ユーザーが写真をアップロードできるようにしたいと考えています。調査の結果、次のものを使用する必要があると確信しました。

-- cron ジョブ -- python メール パーサー -- cURL または libcurl -- データベースを更新するもの

これらすべてのパーツがどのように連携するかについては、まだ明確にする必要があります。cron が電子メールを解析するスクリプトを実行することは知っていますが (読むと単純に聞こえます)、これらすべてをどのように開始するかは困難です。正しい方向、チュートリアル、または回答を教えていただけると助かります。

4

2 に答える 2

3

maildirからメッセージを読みます。最適化されていませんが、メールを解析する方法を示しています。もちろん、ファイルとユーザーに関する情報をデータベースに保存する必要があります。モデルをこのコードにインポートし、正しく挿入します。

import mailbox
import sys
import email
import os
import errno
import mimetypes


mdir = mailbox.Maildir(sys.argv [1], email.message_from_file)


for mdir_msg in mdir:
    counter = 1
    msg = email.message_from_string(str(mdir_msg))
    for part in msg.walk():
        # multipart/* are just containers
        if part.get_content_maintype() == 'multipart':
            continue
        # Applications should really sanitize the given filename so that an
        # email message can't be used to overwrite important files
        filename = part.get_filename()
        if not filename:
            ext = mimetypes.guess_extension(part.get_content_type())
            if not ext:
                # Use a generic bag-of-bits extension
                ext = '.bin'
            filename = 'part-%03d%s' % (counter, ext)
        counter += 1
        fp = open(os.path.join('kupa', filename), 'wb')
        fp.write(part.get_payload(decode=True))
        fp.close()
        #photomodel imported from yourapp.models
        photo = PhotoModel()
        photo.name = os.path.join('kupa', filename)
        photo.email = ....
        photo.save()
于 2010-10-13T13:37:18.460 に答える
0

そのリストの中で何のために cURL が必要なのかわからない - 何をしているはずですか?

どこに困っているかはあまり言いません。これはすべて、通常のcronでトリガーできるDjango管理コマンドで実行できるようです。smtplib標準の Python ライブラリには、メールボックスにアクセスし ( )、メッセージを解析して画像を取得する (emailおよび) ために必要なものがすべて含まれていますemail.message。スクリプトは、画像ファイルをディスク上の関連する場所に保存し、通常の Django ORM を介してデータベースに一致するエントリを作成するだけです。

于 2010-10-13T13:33:24.800 に答える