C# 停止Outlook将HTML转换为RTF

C# 停止Outlook将HTML转换为RTF,c#,.net,outlook,C#,.net,Outlook,我正在为Outlook 2007编写一个外接程序。一切正常,除了当我以HTML格式发送电子邮件时,Outlook将其转换为RTF。因此,如果收件人在Thunderbird中打开它,他会收到一条看起来不可靠的短信,而不是我发送的格式良好的html Outlook.MailItem theMail = (Outlook.MailItem)((Outlook.Application)Globals.ThisAddIn.Application).CreateItem(Outlook.OlItemType

我正在为Outlook 2007编写一个外接程序。一切正常,除了当我以HTML格式发送电子邮件时,Outlook将其转换为RTF。因此,如果收件人在Thunderbird中打开它,他会收到一条看起来不可靠的短信,而不是我发送的格式良好的html

Outlook.MailItem theMail = (Outlook.MailItem)((Outlook.Application)Globals.ThisAddIn.Application).CreateItem(Outlook.OlItemType.olMailItem);
Outlook.Recipient rcp = theMail.Recipients.Add("joe blow <joe@blow.com>");
rcp.Type = (int)Outlook.OlMailRecipientType.olTo;
theMail.HTMLBody = <html composed elsewhere>
theMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
根据文章,该属性无法映射到mime头,Outlook会将其抛出到RTF中


因此,我的下一个问题是找出如何向消息添加唯一标记,以便稍后将其链接到数据库。有什么想法吗?

几年前我就遇到了这个问题。最后,我们用Outlook热修复程序(而不是代码更改)修复了它。

您在邮件上设置了任何用户属性吗


如果使用(单击IMessage按钮)查看“已发送邮件”文件夹中的Outlook邮件,是否会看到UseTnf命名属性(DASL名称{00062008-0000-0000-C000-0000000000 46}/8582000B)?

是否需要设置MIME类型?在HTTP中,解释问题经常发生,因为文件发送时使用了错误的MIME类型。(我猜是
MailItem.BodyFormat
是这样,但我希望缺少一些东西,因为这意味着修复相对简单…)我不认为这是mime类型-Outlook创建rtf正文并将其附加到电子邮件。这可能是我需要的-我在OutlookSpy中没有看到UseTnef-但这是我第一次使用它,所以我可能找不到合适的地方。我假设我使用mailItem属性访问器设置属性,但是我会使用什么值?在哪里可以找到mailItem中的属性列表?您可以使用PropertyAccessor设置该属性。该值必须为false-这将确保不使用RTF格式。谢谢Dmitry,但不起作用。如上所述,问题在于用户属性——我只需要想一些其他方法来标记电子邮件。为什么这不起作用?您的意思是您设置了该属性,但消息仍然以RTF格式发送?或者由于某种原因无法设置属性?
Outlook.UserProperty prop = theMail.UserProperties.Add("theQuoteId", Outlook.OlUserPropertyType.olText);
prop.Value = quote.qid.ToString();