我有一个Outlook加载项,在发送之前将UserProperty分配给MailItem:
Outlook.UserProperty prop = mail.UserProperties.Add("XXXX", Outlook.OlUserPropertyType.olText);
prop.Value = "YYYY";
众所周知(例如,参见Stop Outlook from converting HTML to 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号的电子邮件?
答案 0 :(得分:2)
阻止winmail.dat发送没有什么奇怪的。您可以继续在ItemSend事件中取消设置TNEF属性。
请注意,Outlook使用“对话”跟踪相关邮件。您可以使用Conversation *(* ID + * Index)相关属性来识别收件箱中的电子邮件。
有关详细信息,请参阅Does Outlook embed a MessageID or equivalent in its email elements?。
答案 1 :(得分:2)
不要使用UserProperties集合来标记邮件 - 它会使用用户属性更新blob'定义和存储用户prop值的命名属性。 如果使用MailItem.PropertyAccessor.SetProperty设置后者而不设置前者,Outlook将不会强制使用TNEF格式。
将UseTnef属性设置为false是安全的,除非您以RTF格式发送 - 在将其重置为false之前检查该属性是否设置为true。