C#Outlook约会用户属性 - 不持续跨日历/被邀请者
问题描述:
有没有办法将用户属性持续到约会被邀请者/位置日历?C#Outlook约会用户属性 - 不持续跨日历/被邀请者
我已经为约会创建了一个表单区域,其上有一些额外的表单域。约会写事件后,我可以将表单区域数据作为用户属性保存在约会中。从发件人的角度来看,这些属性在项目打开时仍然存在,并且可以更新等。
但是,约会中的任何受邀者或任何包括的会议室/位置都可以接收约会,但用户物业似乎并没有与该项目进行。为什么会这样,是否可以解决?
我唯一能想到的就是将用户属性保存在数据库中,并在用FormRegion_Showing
方法打开项目时加载它们。尽管整个观点都是一致的,但这并不理想。
我使用的是Outlook 2010和Visual Studio 2015年
我碰到this post其中相当多说,它无法做到的,但是这是从2011年,我找不到任何更近的与自己相关来到到这个特定的场景。
一些削减码 - 窗体区域:
// Form region class
[Microsoft.Office.Tools.Outlook.FormRegionMessageClass(Microsoft.Office.Tools.Outlook.FormRegionMessageClassAttribute.Appointment)]
[Microsoft.Office.Tools.Outlook.FormRegionName("Namespace.MyFormRegion")]
public partial class MyFormRegionFactory
{
}
private void MyFormRegion_FormRegionShowing(object sender, System.EventArgs e)
{
Outlook.AppointmentItem appointment = this.OutlookItem as Outlook.AppointmentItem;
this.appointment.Write += Appointment_Write;
}
private void Appointment_Write(ref bool Cancel)
{
Outlook.ItemProperties CateringData = this.appointment.ItemProperties;
var Serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
Outlook.ItemProperty MeetingNameProperty = CateringData.Add("MeetingName", Outlook.OlUserPropertyType.olText, true);
MeetingNameProperty.Value = this.MeetingName.Text;
// More properties saved
appointment.Save();
}
,并在插件类:
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemSend += Application_ItemSend;
}
private void Application_ItemSend(object Appointment, ref bool Cancel)
{
// Appointment is an AppointmentItem that has just been saved.
// How does this relate to the outgoing item that ends up in the
// Sent Items folder???
}
}
使用Outlook间谍用户属性不在项目已发送的邮件中。从其中一个受邀者日历中打开项目时,表单区域确实出现,但用户属性不在那里。
答
因此,经过大量的头部划伤和修改,以及在使用Outlook Spy与Dmitry(http://www.dimastr.com/outspy/home.htm)帮助检查用户属性后,我意识到我一直在尝试设置一个属性名称,该名称恰好在使用中通过Outlook内部(MeetingType)
更改该属性的名称后,所有其他用户属性现在都保留在已发送的项目和被邀请者的日历中。
对于任何遇到同样问题的地方,在属性不会持续的情况下,请检查您在Outlook中设置的属性名称,可以节省您头痛的时间!
您是否在两个Exchange邮箱之间发送邮件?还是通过SMTP? –
受邀者都是内部的,所以它通过同一个交换服务器,我想。 –
自从发布这个问题后,看了一下它看起来像使用EWS设置项目上的ExtendedProperty可能是一种方法来做到这一点?据推测,这将是在调用附件中的AppointmentItem.Save之后,将属性附加到该项目的方式。 –