Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 扩展MAPI-读取邮件正文在每个字符后添加空格字符_C++_Outlook_Exchangewebservices_Mapi - Fatal编程技术网

C++ 扩展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)相反,您将得到一

我正在尝试使用扩展MAPI解析电子邮件

要获取流指针,我使用
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