有关如何将RFC822电子邮件格式化为JSON的任何建议?

时间:2011-07-27 05:53:40

标签: json email rfc822

我想将RFC822电子邮件插入JSON数据库。

我想设想一种“好”的方式来将电子邮件结构化为JSON(不包括附件)。

有没有人知道电子邮件的“好”JSON布局示例,或者任何人都可以推荐一个?

感谢

更新:我实际上是想查看JSON输出而不是代码来进行转换。

2 个答案:

答案 0 :(得分:0)

没有特别说明,但Mail gem包括一个方法,用于将方法序列化为YAML,以及解析来自YAML的消息。它通过构造一个Hash对象,然后将该对象序列化为JSON来实现。这也意味着它应该很容易转换为JSON。

这样看起来很像(ish)......

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   

来自mikel的Mail gem的Message#to_yaml方法。

您可以采用任何语言的类似方法。如果您正在使用Ruby,这将适合您现有的工具(Mail gem)。

答案 1 :(得分:0)

你可能想要一些列出标题和正文部分的变体。

 {
       headers: [
          { name: value },
          { name2: value}
       ],
       body: [
           { 
               mime: type,
               content: stuff
           },
           {
           },
           .
           .
           .
           {
           }
       ]
    }