2013-05-15 130 views
2

我正在爲Outlook 2007編寫一個加載項。除非以HTML格式發送電子郵件,否則Outlook將其轉換爲RTF,一切正常。所以如果收件人打開它在例如。雷鳥他得到了一個看起來不錯的文本消息,而不是我發送的格式良好的html。停止將HTML轉換爲RTF的Outlook

Outlook.MailItem theMail = (Outlook.MailItem)((Outlook.Application)Globals.ThisAddIn.Application).CreateItem(Outlook.OlItemType.olMailItem); 
Outlook.Recipient rcp = theMail.Recipients.Add("joe blow <[email protected]>"); 
rcp.Type = (int)Outlook.OlMailRecipientType.olTo; 
theMail.HTMLBody = <html composed elsewhere> 
theMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML; 

我該如何說服Outlook,我真的想要html?

編輯 行 - 我發現這裏的問題at MSDN我加入一個用戶屬性

Outlook.UserProperty prop = theMail.UserProperties.Add("theQuoteId", Outlook.OlUserPropertyType.olText); 
prop.Value = quote.qid.ToString(); 

根據文章的屬性不能映射到MIME頭和Outlook拋出成RTF。

所以我的下一個問題是如何在消息中添加一個唯一標記,以便稍後將其鏈接到數據庫。有任何想法嗎?

+0

是否有需要設置的MIME類型?在HTTP中,解釋問題經常出現,因爲文件是使用錯誤的MIME類型發送的。 (我猜'MailItem.BodyFormat'是這個,但我希望有一些東西丟失,因爲這意味着修復相對容易...) – doppelgreener

+0

我不認爲這是一個MIME類型 - Outlook創建一個RTF的身體,並附上它的電子郵件。 – Jon

回答

1

幾年前我有過這個問題。最後,我們使用Outlook修補程序修復它,而不是更改代碼。

1

你是否在消息上設置了任何用戶屬性?

如果你看一下Outlook郵件在發送郵件文件夾用OutlookSpy(點擊即時聊天按鈕),你看到的命名屬性(DASL名http://schemas.microsoft.com/mapi/id/ {00062008-0000-0000-C000-000000000046}/8582000B)的UseTnef?

+0

這可能是我需要的 - 我沒有在OutlookSpy中看到UseTnef--但這是我第一次使用它,所以我可能沒有在正確的位置上看。我假設我使用mailItem屬性訪問器來設置屬性,但是我會使用什麼值?哪裏可以找到mailItem中的屬性列表? – Jon

+0

您可以使用PropertyAccessor設置該屬性。該值必須是false - 這將確保RTF格式*不被使用。 –

+0

謝謝德米特里,但沒有工作。如上所述,問題在於用戶的財產 - 我只需要想一些其他的方式來標記電子郵件。 – Jon