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

本文关键字:项目 发送 RTF TNEF ID Outlook | 更新日期: 2023-09-27 18:32:52

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

Outlook.UserProperty prop = mail.UserProperties.Add("XXXX", Outlook.OlUserPropertyType.olText);
prop.Value = "YYYY";

众所周知(例如,请参阅阻止Outlook将HTML转换为RTF),这样做会导致使用TNEF(即RTF格式,可怕的winmail.dat)发送电子邮件。

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

mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8582000B", false);

这里的问题是我必须在ItemSend上执行此操作 - 我不能在设置属性后立即执行此操作,因为无论如何它总是false。只有当我点击发送时,它才会变成true

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

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

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

不要使用

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

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

阻止

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

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

有关详细信息,请参阅 Outlook 是否在其电子邮件元素中嵌入了 MessageID 或等效项?。