我写了一个 Outlook 插件,它基本上允许通过 Outlook 接收的电子邮件与网站链接,这样电子邮件也可以在网站的通信功能中查看。我将其他详细信息存储在 MailItem 的 ItemProperties 中,这些详细信息基本上是与电子邮件在网站内相关的用户 ID 之类的内容。

我遇到的问题是,在打印电子邮件时,我添加到 MailItem 的任何 ItemProperties 都会被打印。有谁知道如何在打印电子邮件时排除自定义 ItemProperties?

这是创建自定义 ItemProperty 的代码:

// Try and access the required property.
Microsoft.Office.Interop.Outlook.ItemProperty property = mailItem.ItemProperties[name];

// Required property doesnt exist so we'll create it on the fly.
if (property == null) property = mailItem.ItemProperties.Add(name, Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText);

// Set the value.
property.Value = value;

最佳答案

我正在开发 Outlook 扩展,有时我们遇到了同样的问题。
我们的一名团队成员找到了解决方案。您可以创建一些负责禁用打印的方法。您可以在下面看到我们代码的平静:

public void DisablePrint()
{
    long printablePropertyFlag = 0x4; // PDO_PRINT_SAVEAS
    string printablePropertyCode = "[DispID=107]";
    Type customPropertyType = _customProperty.GetType();

    // Get current flags.
    object rawFlags = customPropertyType.InvokeMember(printablePropertyCode , BindingFlags.GetProperty, null, _customProperty, null);
    long flags = long.Parse(rawFlags.ToString());

    // Remove printable flag.
    flags &= ~printablePropertyFlag;

    object[] newParameters = new object[] { flags };

    // Set current flags.
    customPropertyType.InvokeMember(printablePropertyCode, BindingFlags.SetProperty, null, _customProperty, newParameters);
}

确保 _customProperty 是您通过以下代码创建的属性:mailItem.ItemProperties.Add(name,Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText);

关于printing - 从打印中隐藏自定义 ItemProperties。互操作展望,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16468819/

10-13 01:25