2016-12-07 5 views
0

予定の招待者/場所の予定表にユーザーのプロパティを永続させる方法はありますか?C#Outlook Appointmentユーザーのプロパティ - カレンダー/招待者間で永続しない

私は予定のフォーム領域を作成しました。いくつかの余分なフォームフィールドがあります。アポイントメント・ライト・イベントが発生すると、フォーム・リージョン・データをアポイントメントに対するユーザー・プロパティとして保存できます。送信者の観点から見ると、これらのプロパティは、アイテムが開かれても維持され、更新することができます。

ただし、予定の招待者または含まれる会議室/場所は、プロパティは、項目を持ち越されていないようです。これはなぜですか、それは回避できますか?

私が考えることができる唯一のものは、データベースにユーザープロパティを保持し、FormRegion_Showingメソッドを使用してアイテムを開いたときにそれらをロードすることです。それは理想的ではありませんが、その全体のポイントはすべてを見通しに保つことでした。私は、Outlook 2010と私はかなりそれは、しかし、それは2011年からであり、私は関連性のより最近の何かを見つけることができません、行うことができないと言うthis postに出くわした2015年

のVisual Studioを使用してい

この特定のシナリオに適用されます。ユーザープロパティは、送信済みアイテム内の項目に含まれていない見通しのスパイを使用して

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??? 
    } 
} 

// 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(); 
} 

とアドインクラスで:フォーム領域 -

いくつかは、コードを削減しました。招待者のカレンダーの1つからアイテムを開くとフォーム領域が表示されますが、ユーザーのプロパティは表示されません。

+0

2つのExchangeメールボックスの間で送信していますか?またはSMTP経由ですか? –

+0

招待状はすべて内部的なものなので、同じExchangeサーバを経由していると思います。 –

+0

この質問を投稿してから少し読むと、EWSを使用してアイテムにExtendedPropertyを設定すると、そのようになる可能性がありますか?おそらく、それはアドインでAppointmentItem.Saveを呼び出した後にアイテムにプロパティを付加する行に沿ったものでしょうか? –

答えて

1

ドレスリー(http://www.dimastr.com/outspy/home.htm)の助けを借りてOutlookのスパイを使用してユーザーのプロパティを検査した後、私は既に使用されているプロパティ名を設定しようとしていたことに気付きましたOutlookで内部的に(MeetingType)

このプロパティの名前を変更すると、他のすべてのユーザープロパティが送信アイテムと招待者の予定表の両方に保持されるようになりました。

プロパティが持続しない同じ問題を抱えている人は、Outlookですでに設定されているプロパティ名でプロパティ名をチェックしてください。

関連する問題