Printing 隐藏自定义ItemProperties以防打印。Interop.Outlook
我写了一个Outlook插件,它基本上允许通过Outlook接收的电子邮件与网站链接,这样也可以在网站的通信功能中查看电子邮件。我在邮件项目的ItemProperties中存储其他详细信息,这些详细信息基本上是类似于网站中与电子邮件相关的用户id的内容 我遇到的问题是,在打印电子邮件时,我添加到邮件项目中的任何项目属性都会被打印。有人知道在打印电子邮件时如何排除自定义ItemProperties吗 以下是创建自定义ItemProperty的代码:Printing 隐藏自定义ItemProperties以防打印。Interop.Outlook,printing,outlook,interop,mailitem,Printing,Outlook,Interop,Mailitem,我写了一个Outlook插件,它基本上允许通过Outlook接收的电子邮件与网站链接,这样也可以在网站的通信功能中查看电子邮件。我在邮件项目的ItemProperties中存储其他详细信息,这些详细信息基本上是类似于网站中与电子邮件相关的用户id的内容 我遇到的问题是,在打印电子邮件时,我添加到邮件项目中的任何项目属性都会被打印。有人知道在打印电子邮件时如何排除自定义ItemProperties吗 以下是创建自定义ItemProperty的代码: // Try and access the re
// 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;
在低级别(扩展MAPI)上,每个用户属性定义都有一个标志,用于确定其是否可打印。但是,该标志不会通过Outlook对象模型公开
您可以解析用户属性blob并手动设置该标志(记录了用户属性blob格式,如果单击IMessage按钮,您可以在中看到该格式),也可以使用及其。Printable
属性
以下脚本(VB)将重置当前选定消息的所有用户属性的可打印属性:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Msg = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
for each prop in Msg.UserProperties
Debug.Print prop.Name
prop.Printable = false
next
Msg.Save
我正在处理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(名称,Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText)代码>这非常有效!救了我的爱丁不被搁置。一个星期来我一直用这个把头撞在墙上。