C++ 扩展MAPI-读取邮件正文在每个字符后添加空格字符
我正在尝试使用扩展MAPI解析电子邮件 要获取流指针,我使用C++ 扩展MAPI-读取邮件正文在每个字符后添加空格字符,c++,outlook,exchangewebservices,mapi,C++,Outlook,Exchangewebservices,Mapi,我正在尝试使用扩展MAPI解析电子邮件 要获取流指针,我使用LPMAPIPROP::OpenProperty()和PR\u BODY标记返回IStream*,并使用IStream::Read()方法将数据读取到缓冲区 出于某种原因,当我用MFCMAPI打开电子邮件时,身体很好。例如,“ABC”。但是,当我试图以编程方式读取缓冲区时,我会在每个字符后获得空格字符,例如“abc”是空格(0x20),还是0x00?如果您打开的是PR\u BODY\u W(与PR\u BODY\u A)相反,您将得到一
LPMAPIPROP::OpenProperty()
和PR\u BODY
标记返回IStream*
,并使用IStream::Read()
方法将数据读取到缓冲区
出于某种原因,当我用MFCMAPI打开电子邮件时,身体很好。例如,
“ABC”
。但是,当我试图以编程方式读取缓冲区时,我会在每个字符后获得空格字符,例如“abc”
是空格(0x20
),还是0x00
?如果您打开的是PR\u BODY\u W
(与PR\u BODY\u A
)相反,您将得到一个Unicode字符串(每个字符两个字节),而不是一个单字节字符串。出于某种原因,压缩的PR\u RTF\u
已损坏,它没有显示RTF,而是显示PR\u正文
,每个字符之间有空格。我认为这是因为我试图手动设置压缩的PR\u RTF\u
,而不是让Outlook为我设置它。不,它是一个空格0x20,而不是一个空终止符0x0。我正在打开PR_BODY_W
0x65 0x00 0x66 0x00,它是0x65 0x00 0x20 0x00 0x66 0x00…这就是您在MFCMAPI或OutlookSpy中看到的内容(单击IMessage,选择PR_BODY属性,单击“值”编辑框旁边的“…”)。您也可以尝试在OutlookSpy中打开PR_BODY_W-右键单击属性,选择IMAPIProp::OpernProperty,选择IID_IStream。我也尝试过OutlookSpy,不幸的是,结果是一样的。然后你看不到东西-你真的有额外的空间。在PR\u RTF\u COMPRESSED
(Outlook实际显示的内容)中,您是否看到了相同的情况?如果商店本机不支持RTF(store\u OK
中的PR\u store\u support\u MASK中的位),您只需设置PR\u RTF\u COMPRESSED
(或调用RtfSync
)