本文整理汇总了C++中zimbra::util::ScopedInterface::Write方法的典型用法代码示例。如果您正苦于以下问题:C++ ScopedInterface::Write方法的具体用法?C++ ScopedInterface::Write怎么用?C++ ScopedInterface::Write使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zimbra::util::ScopedInterface
的用法示例。
在下文中一共展示了ScopedInterface::Write方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
char cfilename[64];
sprintf(cfilename,"attachment-%d",i);
GenerateContentDisposition(&pszCD, cfilename);
strcpy(lpszRealName, cfilename);
}
// now deal with the encoding
LPSTR pContent = NULL;
const mimepp::String &theContent = thePart.body().getString();
mimepp::String outputString;
UINT size = 0;
mimepp::TransferEncodingType& transferEncoding = thePart.headers().contentTransferEncoding();
if(transferEncoding.asEnum() == mimepp::TransferEncodingType::BASE64)
{
// let's decode the buffer
mimepp::Base64Decoder decoder;
outputString = decoder.decode(theContent);
pContent = (LPSTR)outputString.c_str();
size = (UINT)outputString.size();
}
else if(transferEncoding.asEnum() == mimepp::TransferEncodingType::QUOTED_PRINTABLE)
{
mimepp::QuotedPrintableDecoder decoder;
outputString = decoder.decode(theContent);
pContent = (LPSTR)outputString.c_str();
size = (UINT)outputString.size();
}
else
{
pContent = (LPSTR)theContent.c_str();
size = (UINT)theContent.size();
}
// Save stream to temp file in temp dir. We'll delete in ZimbraAPI //
LPCWSTR errMsg;
HRESULT hr = S_OK;
wstring wstrTempAppDirPath;
LPSTR lpszFQFileName = new char[256];
LPSTR lpszDirName = NULL;
LPSTR lpszUniqueName = NULL;
Zimbra::Util::ScopedInterface<IStream> pStream;
if (!Zimbra::MAPI::Util::GetAppTemporaryDirectory(wstrTempAppDirPath))
{
errMsg = FormatExceptionInfo(S_OK, L"GetAppTemporaryDirectory Failed", __FILE__, __LINE__);
dloge("MAPIRfc2445 -- exception");
dloge(errMsg);
return E_FAIL;
}
WtoA((LPWSTR)wstrTempAppDirPath.c_str(), lpszDirName);
WtoA((LPWSTR)Zimbra::MAPI::Util::GetUniqueName().c_str(), lpszUniqueName);
strcpy(lpszFQFileName, lpszDirName);
strcat(lpszFQFileName, "\\");
strcat(lpszFQFileName, lpszUniqueName);
SafeDelete(lpszDirName);
SafeDelete(lpszUniqueName);
// Open stream on file
if (FAILED(hr = OpenStreamOnFile(MAPIAllocateBuffer, MAPIFreeBuffer, STGM_CREATE |
STGM_READWRITE, (LPTSTR)lpszFQFileName, NULL, pStream.getptr())))
{
errMsg = FormatExceptionInfo(hr, L"Error: OpenStreamOnFile Failed.", __FILE__, __LINE__);
dloge("MAPIRfc2445 -- exception");
dloge(errMsg);
return hr;
}
ULONG nBytesToWrite = size;
ULONG nBytesWritten = 0;
LPBYTE pCur = (LPBYTE)pContent;
while (!FAILED(hr) && nBytesToWrite > 0)
{
hr = pStream->Write(pCur, nBytesToWrite, &nBytesWritten);
pCur += nBytesWritten;
nBytesToWrite -= nBytesWritten;
}
if (FAILED(hr = pStream->Commit(0)))
{
errMsg = FormatExceptionInfo(hr, L"Error: Stream Write Failed.", __FILE__, __LINE__);
dloge("MAPIRfc2445 -- exception");
dloge(errMsg);
}
///////////
// delete all this in MAPIAccessWrap
AttachmentInfo* pAttachmentInfo = new AttachmentInfo();
pAttachmentInfo->pszTempFile = lpszFQFileName;
pAttachmentInfo->pszRealName = lpszRealName;
pAttachmentInfo->pszContentDisposition = pszCD;
pAttachmentInfo->pszContentType = pszAttachContentType;
m_vAttachments.push_back(pAttachmentInfo);
}
}
delete[] pszContentType;
return S_OK;
}