- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题有点远,但我已经花了几个小时无济于事。我有一些代码可以在网络服务器上生成电子邮件文件,并允许用户下载该电子邮件并在 Outlook 中打开它。从这里,他们可以在将电子邮件发送给一群人之前对电子邮件进行各种手动更改。
现在,我生成了一个 .OFT 文件,它基本上是一个电子邮件模板。我想要做的是生成一个 .MSG 文件,这是一个实际的电子邮件。从二进制的角度来看,这些文件格式似乎是相同的。它们具有相同的流 ID、属性和内容。
我的方法是首先在 Outlook 中创建一个空白电子邮件,然后将其保存到一个名为 Base.oft 的文件中。在我的代码中,我打开文档并修改流 ID __substg1.0_1013001E
这是 HTML 电子邮件正文的 ID。然后我保存文件并将其写出到 cilent。这完美地工作。
我对 MSG 格式尝试了相同的方法。我创建了一封空白电子邮件,将其保存为 Base.msg,并修改了相同的 Stream ID。如果我查看生成的文件,新主体实际上就在那里并保存了。但是,如果我打开电子邮件,正文仍然是空白的。
更奇怪的是,如果我在 Outlook 中输入正文并将其保存到基本文件,我可以在流 0_1013001E 下看到该正文。如果我然后使用不同的正文修改该流,我可以验证新正文确实保存在文件中,但是如果我在 Outlook 中打开邮件,我会看到旧的原始正文。就好像电子邮件正文以 .MSG 格式存储在文件中的不同位置,但是我查看了每个流,但找不到任何其他看起来像是电子邮件正文的内容。
也许 .MSG 文件被加密了,或者它们的正文以某种专有的二进制格式存储,与 .OFT 文件不同?希望有人对此有所了解,因为我在互联网上搜索并基本上没有发现这些格式。
更新:
似乎 .MSG 格式将正文存储在 Stream ID __substg1.0_10090102
中- 以某种二进制形式编码(不确定是什么。)如果我删除流(或将其设置为单个 \0
,文件会损坏。
最佳答案
首先,要找到有关此主题和相关主题的更多信息,请远离原始子流编号和 google 以获取相应的 MAPI 属性。例如,1013 是 PR_HTML
和 1009 是 PR_RTF_COMPRESSED
. MAPI 具有将正文从一种格式同步到另一种格式的方法。
见 this MSDN 上的文章很好地概述了所有与内容相关的 MAPI 属性(即 .MSG 文件中的不同“流”)。
要写入 PR_RTF_COMPRESSED,请将流包裹在 WrapCompressedStream 内.另一方面,在您的特定情况下,您可能希望避免代码中的 MAPI 依赖性,因此也许您最好找到 PR_STORE_SUPPORT_MASK
并设置 STORE_UNCOMPRESSED_RTF
少量。这将允许您在 PR_RTF_COMPRESSED 子流中使用直接 RTF。或者 Outlooks 花哨的 html-wrapped-in-rtf,如果你觉得勇敢的话。
这些东西都不适合胆小的人,但是看到您已经在处理原始 .MSG 子流写作,我猜这是可行的。
关于email - Outlook .MSG 和 .OFT 文件格式之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957827/
我觉得 for(int i = 0; i < 2; i++) 和 for(int i = 0; i < 2; ++i) 不应该做同样的事情。对于第二个例子,从循环开始 i 应该等于 1 对我来说更符合
我试图牢牢掌握异常情况,以便改进我的conditional loop implementation .为此,我进行了各种实验,扔东西,看看会被抓到什么。 这个让我惊喜不已: % cat X.hs mo
我只是想回答一个问题,但我遇到了一些我不明白的事情!为什么如果我在文件中使用内联 CSS 或 CSS,如本例中的颜色,结果就不一样! 代码相同,但第一段是绿色,第二段是红色! 我真的不明白为什么? 谢
我目前正在学习 CSS 并进行试验,我偶然发现了输出中的这种差异。所以这是代码: .red-text { color: red;
"""module a.py""" test = "I am test" _test = "I am _test" __test = "I am __test" ============= ~ $ p
在向 Firestore 写入文档时,我经常看到 serverTimestamp() 标记和 new Date() 对象之间的差异不为零。 差异范围从几 秒到几十 分钟。 他们不是在做同样的事情吗?
据我了解,2.675 和 numpy.float64(2.675) 都是相同的数字。然而,round(2.675, 2) 给出 2.67,而 round(np.float64(2.675), 2) 给
问题本身的描述很简单。我正在测试 C++11 中 std::thread 库和 boost::thread 库的区别。 这些的输出: #include #include #include int
我只是想将文本文件读入 pyspark RDD,我注意到 sqlContext.read.load 之间的巨大差异和 sqlContext.read.text . s3_single_file_inp
SC.exe 和 InstallUtil 都可以安装/卸载 Windows 服务。但它们的工作方式似乎并不相同。 有什么区别? 例如,InstallUtil 失败(找不到某些文件或依赖项错误),而 S
我认为Thread对象就像是带有名称和静态Thread.CurrentThread()的抽象对象,就像访问Thread对象的方式一样。显然,这是错误的假设。。是这样的吗?
我认为Thread对象就像是带有名称和静态Thread.CurrentThread()的抽象对象,就像访问Thread对象的方式一样。显然,这是错误的假设。。是这样的吗?
我是一名优秀的程序员,十分优秀!