【问题标题】:Tag Outlook MailItem with ID number before send without causing TNEF (RTF) send在发送前用 ID 号标记 Outlook MailItem 而不会导致 TNEF (RTF) 发送
【发布时间】:2016-09-28 18:13:46
【问题描述】:

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

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 号“标记”电子邮件?

【问题讨论】:

    标签: c# outlook vsto outlook-addin


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      更多信息请参见Does Outlook embed a MessageID or equivalent in its email elements?

      【讨论】:

        猜你喜欢
        • 2017-04-04
        • 1970-01-01
        • 2016-02-19
        • 1970-01-01
        • 2021-02-10
        • 1970-01-01
        • 2020-06-08
        • 2020-05-17
        • 2015-04-07
        相关资源
        最近更新 更多