C# 在发送前使用ID号标记Outlook邮件项目,而不会导致TNEF(RTF)发送

C# 在发送前使用ID号标记Outlook邮件项目,而不会导致TNEF(RTF)发送,c#,outlook,vsto,outlook-addin,C#,Outlook,Vsto,Outlook Addin,我有一个Outlook加载项,它在发送邮件之前为邮件项分配UserProperty: Outlook.UserProperty prop = mail.UserProperties.Add("XXXX", Outlook.OlUserPropertyType.olText); prop.Value = "YYYY"; 众所周知(参见示例),这样做会导致使用TNEF(即RTF格式,可怕的winmail.dat)发送电子邮件 我的问题是,简单地取消设置TNEF属性是否安全?以下代码将执行此操作:

我有一个Outlook加载项,它在发送邮件之前为邮件项分配UserProperty:

Outlook.UserProperty prop = mail.UserProperties.Add("XXXX", Outlook.OlUserPropertyType.olText);
prop.Value = "YYYY";
众所周知(参见示例),这样做会导致使用TNEF(即RTF格式,可怕的winmail.dat)发送电子邮件

我的问题是,简单地取消设置TNEF属性是否安全?以下代码将执行此操作:

mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8582000B", false);
这里的问题是,我必须在
ItemSend
上执行此操作-我无法在设置属性后立即执行此操作,因为此时它始终是
false
。只有当我点击Send时,它才会变成
true

我不介意取消设置TNEF属性意味着该属性不会与电子邮件一起发送。我更担心的是,在其他情况下,可能实际上需要TNEF,而此代码会破坏它们


或者,是否有更好的方法在发送电子邮件之前使用自定义ID号“标记”电子邮件?

阻止winmail.dat发送没有任何奇怪之处。您可以继续在ItemSend事件中取消设置TNEF属性

请注意,Outlook使用对话跟踪相关邮件。您可以使用对话*(*ID+*索引)相关属性来识别收件箱中的电子邮件


有关更多信息,请参阅。

阻止winmail.dat发送没有任何奇怪之处。您可以继续在ItemSend事件中取消设置TNEF属性

请注意,Outlook使用对话跟踪相关邮件。您可以使用对话*(*ID+*索引)相关属性来识别收件箱中的电子邮件


有关详细信息,请参阅。

不要使用UserProperties集合标记消息-它会使用用户属性的定义和存储用户属性值的命名属性更新blob。 如果使用MailItem.PropertyAccessor.SetProperty设置后者而不设置前者,Outlook将不会强制使用TNEF格式


除非以RTF格式发送,否则可以安全地将UseTRef属性设置为false-在将其重置为false之前检查该属性是否设置为true。

不要使用UserProperties集合标记消息-它使用用户属性的定义和存储用户属性值的命名属性更新blob。 如果使用MailItem.PropertyAccessor.SetProperty设置后者而不设置前者,Outlook将不会强制使用TNEF格式

除非以RTF格式发送,否则可以安全地将UseTnef属性设置为false-在将其重置为false之前检查该属性是否设置为true