PST文件中的日历消息在哪里存储约会时间和日期?

时间:2016-07-06 18:59:06

标签: c++ visual-c++ outlook format pst

我正在使用PST File Format SDK尝试从Outlook PST导出中提取一些约会项目数据:

int main()
{
    pst myfile(L"export.pst");
    folder calendar = myfile.open_folder(L"Calendar");
    for (folder::message_iterator msg = calendar.message_begin(); msg != calendar.message_end(); ++msg)
    {
        message m = *msg;
        wstring subject = L"";
        if (m.has_subject())
            subject = m.get_subject();
        wstring body = L"";
        if (m.has_body())
            body = m.get_body();
        wstring htmlbody = L"";
        if (m.has_html_body())
            htmlbody = m.get_html_body();
        size_t num_attachments = m.get_attachment_count();
        size_t num_recipients = m.get_recipient_count();
        property_bag bag = m.get_property_bag();
        vector<prop_id> propertyList = bag.get_prop_list();
        for (vector<prop_id>::iterator prop = propertyList.begin(); prop != propertyList.end(); ++prop)
        {
            if (bag.get_prop_type(*prop) == prop_type_systime)
                FILETIME property = bag.read_prop<FILETIME>(*prop);
        }
        break; // Just try the first message for now.
    }
    return 0;
}

Outlook如何存储约会数据?我的意思是,我怎样才能至少得到预约开始时间和持续时间(或结束时间)?我一直试图搜索PST file format specification from Microsoft,但我似乎无法找到我需要的信息!

编辑:我现在可以像上面的代码那样解析FILETIME个对象,但问题是,我怎样才能将它们区分为他们所指的时间?我的意思是,我怎么知道这是事件发生日期的时间,还是活动结束日期等等?它们应该有名称来区分它们,如果不是的话?如何使用pstsdk

获得该功能

1 个答案:

答案 0 :(得分:2)

这些(以及更多)属性存储为命名的MAPI属性。它们的标签会因不同商店而异,因此您无法对其进行硬编码。

查看OutlookSpy中的现有约会(点击IMessage按钮)。