إدارة عناصر تقويم Outlook

Aspose.Email MapiCalendar توفر الفئة طرقًا وسمات لتعيين خصائص مختلفة لعنصر التقويم. يوفر هذا القسم عينات من الكود لـ:

إنشاء وحفظ عناصر التقويم

يعرض القسم البرمجي التالي كيفية إنشاء وحفظ عنصر تقويم بصيغة ICS.

حفظ عناصر التقويم كملفات MSG

يعرض القسم البرمجي التالي كيفية حفظ عنصر التقويم كملف MSG.

حفظ معرفات المنتجات لعناصر تقويم MAPI إلى ملف ICS

الـ ProductIdentifier خاصية الـ MapiCalendarIcsSaveOptions يستخدم هذا الصف لحفظ عنصر تقويم MAPI إلى ملف iCalendar (ICS) مع الحفاظ على معلومات التاريخ والوقت الأصلية بالإضافة إلى معرف منتج مخصص. تحدد الخاصية المعرف الخاص بالمنتج الذي أنشأ كائن iCalendar.

يعرض مثال الشيفرة التالي كيفية العمل مع بيانات iCalendar (ICS) داخل كائن تقويم MAPI:

var icsSaveOptions = new MapiCalendarIcsSaveOptions
{
    KeepOriginalDateTimeStamp = true,
    ProductIdentifier = "Foo Ltd"
};

mapiCalendar.Save("my.ics", icsSaveOptions);

الحصول على العدد الإجمالي للأحداث

تمكن فئة CalendarReader من معالجة أحداث التقويم بسهولة. الخصائص التالية وطريقة واحدة تسمح لك بالعمل مع أحداث متعددة:

  • CalendarReader.Count - تسمح خاصية Count في فئة CalendarReader بالحصول على عدد مكوّنات Vevent (الأحداث) الموجودة في التقويم، مما يسهل تتبع العدد الإجمالي للأحداث.
  • CalendarReader.IsMultiEvents - تحدد هذه الخاصية ما إذا كان التقويم يحتوي على أحداث متعددة. تُعطي قيمة منطقية تشير إلى ما إذا كان التقويم يحتوي على أكثر من حدث واحد، مما يساعد في تحديد التقويمات ذات الحدث الواحد أو المتعدد.
  • CalendarReader.Method - الخاصية Method تحصل على نوع طريقة iCalendar المرتبط بكائن التقويم. تُرجع نوع الطريقة، مثل “REQUEST”، “PUBLISH”، أو “CANCEL”، مما يوفر رؤى قيمة حول غرض التقويم.
  • CalendarReader.Version - يحصل على نسخة iCalendar.
  • CalendarReader.LoadAsMultiple() تمكّن هذه الطريقة من تحميل قائمة من الأحداث من تقويم يحتوي على عدة أحداث. تُرجع قائمة من كائنات Appointment، مما يسمح بالوصول السهل ومعالجة كل حدث على حدة.

يوضح مثال الكود التالي كيف يمكنك تنفيذ هذه القدرات في مشروعك:

var reader = new CalendarReader(fileName);
Console.WriteLine("Calendar contains " + reader.Count + " events");
Console.WriteLine("The Version of the calendar is " + reader.Version);
Console.WriteLine("The Method of the calendar is " + reader.Method);
Console.WriteLine("Is calendar contains contains multiple events? - " + reader.IsMultiEvents);
List<Appointment> appointments = reader.LoadAsMultiple();

إضافة تذكيرات عرض

يوضح مقطع الكود التالي كيفية إضافة تذكير عرض إلى تقويم.

إضافة تذكيرات صوتية

يعرض القسم البرمجي التالي كيفية إضافة تذكير صوتي إلى التقويم.

إضافة/استرجاع المرفقات من ملفات التقويم

يعرض القسم البرمجي التالي كيفية إضافة/استرجاع المرفقات من ملفات التقويم.

تحقق من حالة المستلمين في طلبات الاجتماعات

يوضح مقطع الكود التالي كيفية إظهار حالة المستلمين من طلب اجتماع.

إنشاء منطقة زمنية لتقويم MAPI من المنطقة الزمنية القياسية

يوضح مقطع الكود التالي كيفية إنشاء MapiCalendarTimeZone من المنطقة الزمنية القياسية.

تعيين تذكيرات للمواعيد

يمكن إضافة تذكير عند إنشاء موعد. يمكن لهذه التنبيهات أن تُtrigger بناءً على معايير مختلفة مثل n دقيقة قبل بدء الجدول، أو التكرار n مرات بفواصل زمنية n. يمكن استخدام وسوم مختلفة لإنشاء هذه المشغلات في النص البرمجي المحاط بـ BEGIN:VALARM و END:VALARM داخل الموعد. هناك عدة تنويعات يمكن من خلالها ضبط التذكير على الموعد.

إضافة وسوم لتعيين التذكيرات

يظهر القسم البرمجي التالي كيفية ضبط تذكير بإضافة وسوم.

تحويل موعد EML إلى MSG مع جسم HTML

منذ الإصدار 19.3، توفر Aspose.Email القدرة على تحويل موعد EML إلى MSG مع الحفاظ على جسم HTML للموعد. توفر Aspose.Email MapiConversionOptions.ForcedRtfBodyForAppointment الخاصية التي لها قيمة افتراضية true. عندما تكون قيمة MapiConversionOptions.ForcedRtfBodyForAppointment عند ضبطه على true، يتم تحويل جسم الموعد إلى صيغة RTF. للحفاظ على تنسيق جسم الموعد بصيغة HTML، عيّن قيمة MapiConversionOptions.ForcedRtfBodyForAppointment إلى false.

المثال التالي يوضح استخدام MapiConversionOptions.ForcedRtfBodyForAppointment خاصية للحفاظ على تنسيق جسم الموعد بصيغة HTML.

تعيين حالة عناصر تقويم MAPI يدويًا

عيّن حالة كائن تقويم MAPI صراحةً، متجاوزًا السلوك الافتراضي. يتيح ذلك تحكمًا أفضل في حالات أحداث التقويم، خصوصًا عند معالجة طلبات الاجتماعات المستلمة. افتراضيًا، عند إنشاء اجتماع، تكون حالته MapiCalendarState.Meeting. عند استلامه في صندوق الوارد للمستلم، يتغيّر تلقائيًا إلى MapiCalendarState.Received، وتم تحديث فئة رسالته إلى “IPM.Schedule.Meeting.Request”. باستخدام SetStateForced يسمح بتعيين الحالة يدويًا إلى Received، مما قد يكون مفيدًا للحفاظ على معلومات المنظم عند حفظ التقويم كملف MSG. ومع ذلك، قد يمنع ذلك إعادة توجيه الاجتماع أو إرساله مرة أخرى بشكل صحيح.

عينة الكود أدناه توضح كيفية إنشاء MapiCalendar كائن، تعيين منظم، وتعيين حالته صراحةً إلى كليهما Meeting و Received باستخدام SetStateForced. ثم يقوم بحفظ عنصر التقويم كملف .msg.

MapiCalendar appointment = new MapiCalendar(
    "LAKE ARGYLE WA 6743",
    "Appointment",
    "This is a very important meeting :)",
    new DateTime(2024, 5, 10, 12, 30, 0, DateTimeKind.Utc),
    new DateTime(2024, 5, 10, 13, 30, 0, DateTimeKind.Utc));

appointment.Organizer = new MapiElectronicAddress
{
    EmailAddress = "test@aaa.com",
    DisplayName = "test display Name"
};

appointment.SetStateForced(MapiCalendarState.Meeting | MapiCalendarState.Received);

appointment.Save("appointment.msg", AppointmentSaveFormat.Msg);