2011-12-17 297 views
1

我正在編寫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版本的方式,任何幫助將不勝感激。

回答

2

有點過時,但是剛纔看到現在這樣......

你可能會需要下降到了MAPI水平正常做到這一點。例如:

LPMESSAGE MapiMessage; 
HRESULT ResultCode = HrGetOneProp(MapiMessage, PR_HTML, &PropertiesValues); 
LPSBinary HtmlBodyProperty = (LPSBinary)&PropertiesValues->Value.bin; 

將MAPI支持集成到您的插件中並不像有些人想象的那樣痛苦。一個好的起點是「Using MAPI to Create Outlook 2007 Items」。

+0

謝謝,這就是我最終做的。 – rad 2012-11-08 12:56:32

相關問題