在c ++中序列化mapi消息

时间:2016-02-16 07:58:36

标签: c++ visual-c++ com atl mapi

我想要做的是将mapimessage对象(LPMESSAGE)转换为可转换格式,我们可以将其序列化为字节(我更喜欢这种方法),或xml格式。在这种情况下,最佳做法是什么?怎么做?有没有图书馆这样做? 注意:我可以将lpmessage转换为mime并返回,但是当我使用iconversionsession时,我注意到它失去了很多属性。

2 个答案:

答案 0 :(得分:0)

如果您可以访问这些类的内部(我相信你这样做),我建议您阅读序列化常见问题解答:https://isocpp.org/wiki/faq/serialization。您可以在此主题上了解所有内容。 (提示:如果不这样做,那么您总是可以从它们派生并使用其他序列化方法扩展它们的接口。)

如果您对实施自己的解决方案不感兴趣,可以尝试第三方,例如boost serialization lib:http://www.boost.org/doc/libs/1_60_0/libs/serialization/doc/index.html

答案 1 :(得分:0)

您可以将IMessage转换为.MSG文件。虽然不是一个完美的过程,但大多数时候都会保留大多数属性,Outlook可以打开这些序列化的消息,以便它们更易于使用(和验证)。搜索OpenIMsgOnIStg的代码示例。

如果您不想使用MSG作为序列化格式,那么您必须自己推出。 IMAPIProp对象只是具有数字ID的属性包,但所有不同类型的属性值都必须以不同方式持久化。