Outlook 2010 C++加载项 - HTML电子邮件正文检索
问题描述:
我正在编写Outlook 2010加载项,我的加载项根据每个电子邮件格式(纯文本/ HTML)将电子邮件附加到页脚,现在我刚刚发现当我启用Outlook“阅读电子邮件为纯文本”功能(http://support.microsoft.com/kb/831607)时,会发生问题,我的加载项将以纯文本形式接收HTML电子邮件,因此它会添加页脚并相应地保存它们,这是一个问题,因为之后保存为纯文本,电子邮件的实际HTML版本完全从Outlook中丢失。Outlook 2010 C++加载项 - HTML电子邮件正文检索
这里是我的代码(编辑为简洁起见):
void CConnect::OnNewItem(IDispatch* item)
{
if (item)
{
CComQIPtr<Outlook::_MailItem> mailItem(item);
OlBodyFormat bodyFormat;
mailItem->get_BodyFormat(&bodyFormat);
CComBSTR body;
if(bodyFormat == olFormatPlain)
mailItem->get_Body(&body);
if(bodyFormat == olFormatHTML)
mailItem->get_HTMLBody(&body);
//append the footer here
if(bodyFormat == olFormatPlain)
mailItem->put_Body(newBody);
if(bodyFormat == olFormatHTML)
mailItem->put_HTMLBody(newBody);
mailItem->Save();
mailItem->Release();
}
}
我也试图让邮件的HTML正文不管他们的格式实际上是,但我得到的纯文本版本生成的HTML版本,因此所有原始的CSS和格式都会丢失。
我需要的是一种能够在Outlook“阅读电子邮件为纯文本”功能时检索原始HTML版本的方式,任何帮助将不胜感激。
答
有点过时,但是刚才看到现在这样......
你可能会需要下降到了MAPI水平正常做到这一点。例如:
LPMESSAGE MapiMessage;
HRESULT ResultCode = HrGetOneProp(MapiMessage, PR_HTML, &PropertiesValues);
LPSBinary HtmlBodyProperty = (LPSBinary)&PropertiesValues->Value.bin;
将MAPI支持集成到您的插件中并不像有些人想象的那样痛苦。一个好的起点是“Using MAPI to Create Outlook 2007 Items”。
谢谢,这就是我最终做的。 – rad 2012-11-08 12:56:32