以下函数使用IConverterSession从磁盘上的mhtm文件创建新消息。使用Outlook版本< 2016年的结果是一个html格式的消息,包括CSS样式和嵌入的图片。使用Outlook 2016,文件的原始MIME代码将作为文本正文...
添加到邮件中HRESULT ImportEMLToIMessage
(
LPCWSTR lpszEMLFile,
LPMESSAGE lpMsg,
ULONG ulConvertFlags
)
{
HRESULT rv= S_OK;
if (lpszEMLFile&&lpMsg) {
// try to create an instance of the converter
// interface (CoCreateInstance / DllGetClassObject)
LPCONVERTERSESSION lpConverter = CreateConverterSession();
if (lpConverter) {
// open input stream
LPSTREAM lpEMLStm = NULL;
rv= MyOpenStreamOnFile(fctAllocateBuffer, fctFreeBuffer,
STGM_READ, lpszEMLFile, NULL, &lpEMLStm);
if (lpEMLStm&&SUCCEEDED(rv)) {
rv= lpConverter->SetEncoding(IET_QP);
if (SUCCEEDED(rv)) {
rv= lpConverter->SetSaveFormat(SAVE_RFC1521);
}
if (SUCCEEDED(rv)) {
rv= lpConverter->MIMEToMAPI(lpEMLStm, lpMsg, NULL, ulConvertFlags);
if (SUCCEEDED(rv)) {
rv= lpMsg->SaveChanges(NULL);
}
}
lpEMLStm->Release();
}
}
lpConverter->Release();
}
}
return rv;
}
有谁知道,如何在Outlook 2016中使这项工作?感谢。
答案 0 :(得分:0)
一些事情:
1.你为什么打电话给SetEncoding?
2.如果要导入MIME文件,为什么还需要SetSaveFormat?
3. ulConvertFlags的价值是什么?你永远不会初始化那个变量。
您是否在OutlookSpy中看到了问题(点击IConverterSession | MIMEToMAPI)?
您可能还想将PR_MESSAGE_CLASS
属性设置为" IPM.Note"第一