diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c index 5628728352d..b794f5d01cb 100644 --- a/dlls/inetcomm/mimeole.c +++ b/dlls/inetcomm/mimeole.c @@ -2189,8 +2189,44 @@ static HRESULT WINAPI MimeMessage_GetTextBody( IStream **pStream, LPHBODY phBody) { - FIXME("(%p)->(%d, %d, %p, %p)\n", iface, dwTxtType, ietEncoding, pStream, phBody); - return E_NOTIMPL; + HRESULT hr; + HBODY hbody; + FINDBODY find_struct; + IMimeBody *mime_body; + static char text[] = "text"; + static char plain[] = "plain"; + static char html[] = "html"; + + TRACE("(%p)->(%d, %d, %p, %p)\n", iface, dwTxtType, ietEncoding, pStream, phBody); + + find_struct.pszPriType = text; + + switch(dwTxtType) + { + case TXT_PLAIN: + find_struct.pszSubType = plain; + break; + case TXT_HTML: + find_struct.pszSubType = html; + break; + default: + return MIME_E_INVALID_TEXT_TYPE; + } + + hr = IMimeMessage_FindFirst(iface, &find_struct, &hbody); + if(hr != S_OK) + { + TRACE("not found hr %08x\n", hr); + *phBody = NULL; + return hr; + } + + IMimeMessage_BindToObject(iface, hbody, &IID_IMimeBody, (void**)&mime_body); + + IMimeBody_GetData(mime_body, ietEncoding, pStream); + *phBody = hbody; + IMimeBody_Release(mime_body); + return hr; } static HRESULT WINAPI MimeMessage_SetTextBody( diff --git a/include/mimeole.idl b/include/mimeole.idl index 171f0e90e44..9d4f45bc0cd 100644 --- a/include/mimeole.idl +++ b/include/mimeole.idl @@ -41,6 +41,8 @@ cpp_quote("#define MIME_E_NOT_FOUND 0x800cce05") cpp_quote("#define MIME_E_NO_DATA 0x800cce05") cpp_quote("#define MIME_E_BUFFER_TOO_SMALL 0x800cce06") +cpp_quote("#define MIME_E_INVALID_TEXT_TYPE 0x800cce38") + cpp_quote("typedef enum tagMIMEPROPID {") cpp_quote(" PID_HDR_NEWSGROUP = 2,") cpp_quote(" PID_HDR_NEWSGROUPS = 3,") @@ -894,6 +896,9 @@ cpp_quote("#endif") WCHAR wchQuote; } WEBPAGEOPTIONS, *LPWEBPAGEOPTIONS; + cpp_quote("#define TXT_PLAIN 1") + cpp_quote("#define TXT_HTML 2") + HRESULT CreateWebPage( [in] IStream *pRootStm, [in] LPWEBPAGEOPTIONS pOptions,