Любые предложения о том, как отформатировать электронную почту RFC822 как JSON? - PullRequest
4 голосов
/ 27 июля 2011

Я хочу вставить электронные письма RFC822 в базу данных JSON.

Я хочу предусмотреть «хороший» способ структурирования электронной почты как JSON (исключая вложения).

Кто-нибудь знает пример «хорошего» макета JSON для электронной почты, в качестве альтернативы кто-нибудь может предложить один?

спасибо

ОБНОВЛЕНИЕ: Я на самом деле ищу вывод JSON, а некод для преобразования.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2013

Возможно, вам нужен какой-то вариант, в котором перечислены заголовки и части тела.

 {
       headers: [
          { name: value },
          { name2: value}
       ],
       body: [
           { 
               mime: type,
               content: stuff
           },
           {
           },
           .
           .
           .
           {
           }
       ]
    }
0 голосов
/ 27 июля 2011

Специально не сделано, но в Mail gem есть метод для сериализации методов в YAML, а также для анализа сообщений из YAML. Это делается путем создания объекта Hash и последующего сериализации этого объекта в JSON. Это также означает, что конвертировать в JSON должно быть легко.

Это выглядело бы так (иш) так ...

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   

Из метода Message#to_yaml драгоценного камня Микеля.

Вы можете использовать аналогичный подход на любом языке. Однако, если вы используете Ruby, это отлично подойдет для вашего существующего инструментария (самоцветы Mail).

...