关于如何将 RFC822 电子邮件格式化为 JSON 有什么建议吗?

发布于 2024-11-26 15:58:59 字数 171 浏览 0 评论 0原文

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

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

有谁知道电子邮件的“良好”JSON 布局的示例,或者有人可以建议一个吗?

谢谢

更新:我实际上希望看到 JSON 输出而不是执行转换的代码。

I am wanting to insert RFC822 emails into a JSON database.

I'm wanting to envisage a "good" way to structure the email as JSON (excluding attachments).

Does anyone know of an example of a "good" JSON layout for an email, alternatively can anyone suggest one?

thanks

UPDATE: I'm actually looking to see the JSON output rather than the code to do the conversion.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

葬心 2024-12-03 15:58:59

没有具体完成,但是 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 gem)。

Not done it specifically, but the Mail gem includes a method for serializing methods to YAML, and also for parsing messages from YAML. It does this by constructing a Hash object and then serializing that object to JSON. That also means it should be easy to convert to JSON.

This would prolly look (ish) like this…

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   

From the Message#to_yaml method of mikel's Mail gem.

You could take a similar approach in any language. If you're using Ruby though, this would fit great with your existing tooling (the Mail gem).

神魇的王 2024-12-03 15:58:59

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

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

You probably want some variant of something that lists the headers and body parts.

 {
       headers: [
          { name: value },
          { name2: value}
       ],
       body: [
           { 
               mime: type,
               content: stuff
           },
           {
           },
           .
           .
           .
           {
           }
       ]
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文