2011-07-27 4 views
4

JSONデータベースにRFC822電子メールを挿入したいと考えています。JSONとしてRFC822電子メールをフォーマットする方法の提案はありますか?

JSON(添付ファイルを除く)として電子メールを構造化する「良い」方法を想像したいと思います。

メールの「良い」JSONレイアウトの例を知っている人はいますか?

おかげ

UPDATE:私は実際にJSON出力ではなく、変換を行うためのコードを見て探しています。

+0

なぜJSONですか?なぜBase-64は添付ファイルを含めて全部をエンコードするだけではないのですか?電子メールコンテンツがデータベースに挿入されると、そのコンテンツを検索可能にしたいと考えていますか? – aroth

+0

はい、JSONデータベースに入っているので、フィールドにアクセスしたいと考えています。 –

答えて

0

具体的には行われませんが、Mail gemには、YAMLへのメソッドのシリアライズ、およびYAMLからのメッセージの解析のためのメソッドが含まれています。これは、Hashオブジェクトを作成し、そのオブジェクトをJSONにシリアル化することで行います。つまり、JSONに簡単に変換できるはずです。

これはprollyミケルのメール宝石のMessage#to_yaml方法から、このような(っぽい)...

require 'json' 

module Mail 
    class Message 
    def to_json(opts = {}) 
     hash = {} 
     hash['headers'] = {} 
     header.fields.each do |field| 
     hash['headers'][field.name] = field.value 
     end 
     hash['delivery_handler'] = delivery_handler.to_s if delivery_handler 
     hash['transport_encoding'] = transport_encoding.to_s 
     special_variables = [:@header, :@delivery_handler, :@transport_encoding] 
     (instance_variables.map(&:to_sym) - special_variables).each do |var| 
     hash[var.to_s] = instance_variable_get(var) 
     end 
     hash.to_json(opts) 
    end   
    end 
end 

を見てしまいます。

どのような言語でも同様のアプローチをとることができます。 Rubyを使っているなら、これはあなたの既存のツール(Mail gem)にぴったりです。

+0

私は実際に変換を行うコードではなくJSONの出力を見ていますが、あなたの応答に感謝します –

0

おそらく、ヘッダーとボディ部分をリストする何らかの変形が必要です。

{ 
     headers: [ 
      { name: value }, 
      { name2: value} 
     ], 
     body: [ 
      { 
       mime: type, 
       content: stuff 
      }, 
      { 
      }, 
      . 
      . 
      . 
      { 
      } 
     ] 
    } 
関連する問題