2011-10-25 6 views
0

電子メールを取得してデータベースに格納するアプリケーションを設定しています。少なくとも現時点では、実際のメール機能にこのアプリケーションを使用する予定はありません。主に私は、IMAPではなくDBバックエンドを使用して、さまざまなインターフェースを使い遊びたいと思います。 (初心者の場合は電子メール)。データベースに別々に保存する最も重要な電子メールヘッダー

つまり、私のMySQLテーブルをメッセージ用に設計するとき、別々のフィールドに含める主要なヘッダは何でしょうか?私は一般的に、別のヘッダを解析するための理由があることだと思う:

  • 分類を検索する

    • 速度、ストレージのすなわち、送信者によって
    • 削減、すなわち、重複した電子メールまたはスレッドを思い出し、ちょうどそれらを捨てる

    は、ここに私の推論で、私がつかむしたいのヘッダーです:

    • へ - ターゲットが実際に
    • X-MailerのCCとして受信されたときにキャッチする - - 自己説明
    • から - 自己説明
    • はに配信クライアントの人々が
    • 日付を使用しているかを見るのは興味深いだろう - 日付/時刻によって分類
    • 件名 - 自明
    • コンテンツタイプ - トラッキング複製のため(例えば、OAuthのからのメッセージを引くの場合)
    • から
    • メッセージIDを表示する方法を選択します

    私が理解しているように、かなり寛大で、いくつかの(多くの?)電子メールにはこれらのヘッダーが含まれていないことを考えると、ヘッダーが自分のフィールドにふさわしいと思うあなたのアドバイスに感謝します。あるいは、すべてのヘッダーに何か愛が必要なのでしょうか?

    ありがとうございます!

  • 答えて

    1

    代わりに、電子メールとヘッダーの間に1:nの関係を持つ別の「ヘッダー」テーブルがあると考えます。

    id 
    mail_id   (ID of the E-Mail record this belongs to) 
    header_name  (Name of the header, e.g. "Content-type") 
    header_content (Content of the header) 
    position   (Optionally: The position this header is in in the E-Mail) 
    

    これは、デザインが優れており、ヘッダーを無制限に保存できるようになります。

    1

    へ - 自己説明

    自己説明?私はそうは思わない。必ずしもメールの受信者(SMTPエンベロープによって決まる)ではないので、それを念頭に置いて、「cc」ヘッダ/ bccエンベロープの受信者を除外する理由は何ですか? 「配信先」には情報の一部が表示される場合がありますが、ここにはあいまいさがたくさんあります。

    どのデータを保存するかは、必要なデータとその処理方法を決定します。

    すべてのヘッダーを保存するのにオーバーヘッドがかかりますか?特にヘッダー定義を(列名ではなく)データとして格納する場合、たとえば、

    これにより、ホワイトリストではなくブラックリストを適用することができます(つまり、記録したくないヘッダーを選択する)。

    関連する問題