Ruby 如何解码Lotus Notes Dxl<;rawitemdata type=';502'>;?这是Base64吗?RFC822文本?

Ruby 如何解码Lotus Notes Dxl<;rawitemdata type=';502'>;?这是Base64吗?RFC822文本?,ruby,lotus-notes,decode,Ruby,Lotus Notes,Decode,我们正在导入从Lotus Notes导出到dxl的项目。有些项目列为rawitemdata type='502'。我发现了一些证据表明这些是Mime类型,是Base64编码的。第31张幻灯片(http://wenku.baidu.com/view/3d29abcfa1c7aa00b52acb52.html:)表示它们是RFC822文本(研究此文本) 有什么想法吗?我更喜欢Ruby的答案,但如果有任何帮助,我都会很高兴。PostedDate是一个包含邮件离开发件人邮件文件的时间/日期的。由于“Da

我们正在导入从Lotus Notes导出到dxl的项目。有些项目列为
rawitemdata type='502'
。我发现了一些证据表明这些是Mime类型,是Base64编码的。第31张幻灯片(http://wenku.baidu.com/view/3d29abcfa1c7aa00b52acb52.html:)表示它们是RFC822文本(研究此文本)

有什么想法吗?我更喜欢Ruby的答案,但如果有任何帮助,我都会很高兴。

PostedDate是一个包含邮件离开发件人邮件文件的时间/日期的。由于“Date:”之后的所有内容似乎都是a,我认为您可以安全地对“Date:”之后的所有内容进行Base64解码,并将其用作PostedDate字段的值,丢弃剩余的数据


(我不知道为什么DXL会这样渲染字段。可能是相关的,但我不确定。)

您知道项目中有哪些数据吗?我明白了� �������„=R�Os%日期:2007年9月7日星期五10:58:17-040当我解码数据时。它是类型为“RFC822”的文本数据。()我没有源代码,只有dxl。如图所示,rawitemdata应该是PostEdate。我被日期值前面的十六进制字符弄糊涂了。我不能确切地告诉您rawitemdata中发生了什么,但我相信键入\u RFC822 \u TEXT意味着有两个存储值。数据表示来自RFC822数据流的头,该头必须是纯7位文本——即您看到的“日期:…”部分。但数据也表示存储的数据二进制值。因为这是PostedDate字段,所以数据中可能会有TIMEDATE结构——但只有8个字节,而且还有很多字节,而且字节值看起来太低,不可能是真正的TIMEDATE。调查这一点的一种方法是获取一些以MIME格式存储的“已发送”电子邮件消息(因此PostedDate将采用RFC822文本格式)并将它们导出到DXL。通过比较不同TIMEDATE值的解码Base64值,您可能会知道发生了什么。请记住,上面字符串中的\t与0x09相同,\b与0x09相同。也就是说,如果字节在可打印范围(“=”和“R”)内,Ruby的字符串呈现会为您提供一个字符标准转义(如果存在)(\t和\b),或hex escape.Ooops.I表示\b是一个0x08。它是以DXL方式导出的,因为NSF文件中的原始消息是以MIME格式存储的。由于Domino目录中的发件人位置设置和/或收件人设置,它是以这种方式存储的。当消息以MIME格式存储时,各种与日期相关的头将被删除存储的便笺中的ms以RFC822文本格式存储,而不是时间/日期格式。如果您在便笺中检查MIME格式消息的文档属性,可以看到这一点。这是有意义的。这与我使用MIME呈现的富文本字段进行的本地测试一致,该字段生成了AGACAAAAAGBNAALWAAAAAAABDB250ZW50LVR5CGU6IHRLEHQVAHRTBDSGY2HHcnNldD0iVVMt QVNDSUKIDQONCG0KPGJYPJXMB250IHNPEMU9MIBMYWNWLPSJZYW5ZLXNLCMLMIJ4WMS8YNS8YMDEY PC9mb250Pg0K,它解码为纯文本HTML内容之前相同类型的十六进制字符。
<item name='PostedDate'>
  <rawitemdata type='502'>
    DgAJAAAACAAEAAIAHgCEPVIAT3MlBERhdGU6IEZyaSwgNyBTZXAgMjAwNyAxMDo1ODoxNyAtMDQwMA==
  </rawitemdata>
</item>
Base64.decode64('DgAJAAAACAAEAAIAHgCEPVIAT3MlBERhdGU6IEZyaSwgNyBTZXAgMjAwNyAxMDo1ODoxNyAtMDQwMA')
=> "\x0E\x00\t\x00\x00\x00\b\x00\x04\x00\x02\x00\x1E\x00\x84=R\x00Os%\x04Date: Fri, 7 Sep 2007 10:58:17 -040"