إدارة عناصر تقويم Outlook
الـ MapiCalendar الفئة في مكتبة Aspose.Email تقدم طرقًا وسمات مختلفة لتكوين ومعالجة عناصر التقويم. هذا يتيح إدارة فعّالة لعناصر تقويم Outlook، مما يعزز الإنتاجية والتنظيم. فيما يلي الأقسام التي ستوجهك عبر جوانب مختلفة لإدارة عناصر التقويم.
إنشاء وحفظ عناصر التقويم
إنشاء وحفظ عناصر التقويم
المقتطف البرمجي التالي يوضح كيفية إنشاء وحفظ عنصر تقويم بصيغة ICS:
- حدد المسار الذي سيُحفظ فيه ملف التقويم الخاص بك.
- إنشاء موعد عن طريق تهيئة كائن جديد MapiCalendar كائن يحتوي على تفاصيل محددة مثل الموقع، العنوان، الوصف، وقت البدء، ووقت الانتهاء.
- احفظ الموعد المُنشأ كملف ICS في الدليل المحدد.
import aspose.email as ae
from datetime import datetime
data_dir = "path/to/data/directory"
# Create the appointment
calendar = ae.mapi.MapiCalendar(
"LAKE ARGYLE WA 6743",
"Appointment",
"This is a very important meeting :)",
datetime(2012, 4, 1),
datetime(2012, 5, 1))
calendar.save(data_dir + "CalendarItem_out.ics", ae.calendar.AppointmentSaveFormat.ICS)
حفظ عناصر التقويم كملف MSG
المقتطف البرمجي التالي يوضح لك كيفية حفظ عنصر التقويم كملف MSG:
تحديد معرف المنتج لتحويل MapiCalendar إلى ICS
مكتبة Aspose.Email تتيح لك حفظ MapiCalendar (عنصر تقويم) إلى ملف ICS (iCalendar) مع خيارات محددة. التالي الخصائص سيسمح لك بالاحتفاظ بالطوابع الزمنية الأصلية المرتبطة بعنصر التقويم وتعيين معرف المنتج في ملف الـICS، على سبيل المثال إلى "Foo Ltd"، على التوالي:
- ics_save_options.keep_original_date_time_stamp
- ics_save_options.product_identifier
معرف المنتج هو حقل يحدد البرنامج أو الخدمة التي أنشأت ملف الـICS.
فيما يلي عينة شفرة تسمح لك بتحديد معرف المنتج عند حفظ MapiCalendar إلى صيغة ICS:
import aspose.email as ae
from datetime import datetime
mapi_calendar = ae.mapi.MapiCalendar(
"LAKE ARGYLE WA 6743",
"Appointment",
"This is a very important meeting :)",
datetime(2024, 4, 1),
datetime(2024, 4, 2))
ics_save_options = ae.mapi.MapiCalendarIcsSaveOptions()
ics_save_options.keep_original_date_time_stamp = True
ics_save_options.product_identifier = "Foo Ltd"
mapi_calendar.save("my.ics", ics_save_options)
عدد إجمالي أحداث التقويم
الـ CalendarReader الفئة توفر وظائف لقراءة وتحليل بيانات التقويم من ملف مخصص. من خلال تهيئة كائن CalendarReader، يمكنك استخراج تفاصيل حاسمة مثل إجمالي عدد الأحداث، إصدار التقويم، الطريقة المستخدمة، وما إذا كان التقويم يحتوي على多个 الأحداث. فيما يلي مقتطف برمجي يوضح كيفية التفاعل مع بيانات التقويم وتحميل المواعيد كقائمة شاملة من الأحداث:
import aspose.email as ae
reader = ae.calendar.CalendarReader("calendar.ics")
print(f"Calendar contains {reader.count} events")
print(f"The Version of the calendar is {reader.version}")
print(f"The Method of the calendar is {reader.method}")
print(f"Is calendar contains contains multiple events? - {reader.is_multi_events}")
appointments = reader.load_as_multiple()
إضافة تذكيرات عرض إلى عناصر التقويم
يعرض القسم البرمجي التالي كيفية إضافة تذكير مرئي إلى التقويم.
إضافة تذكيرات صوتية إلى عناصر التقويم
المقتطف البرمجي التالي يوضح لك كيفية إضافة تذكير صوتي إلى تقويم.
تحديد حالة MapiCalendar صراحةً
Aspose.Email يوفر طريقة لتحديد حالة كائن MapiCalendar صراحةً، متجاوزًا السلوك الافتراضي:
- void MapiCalendar.set_state_forced(MapiCalendarState state) - يوفر سيطرة أكبر على حالة عنصر التقويم، خاصةً عند التعامل مع طلبات الاجتماعات المستلمة.
عند إنشاء كائن MapiCalendar، يتم تعيين الحالة MapiCalendarState.MEETING تلقائيًا. عندما يتلقى المستلم العنصر، تتغير الحالة عادةً إلى MapiCalendarState.RECEIVED، ويتم تحديث فئة الرسالة إلى "IPM.Schedule.Meeting.Request".
عينة الشفرة التالية توضح كيفية إنشاء موعد اجتماع باستخدام Aspose.Email للغة بايثون عبر .NET، ضبط المنظم وحالة التقويم يدويًا، وحفظ الموعد كملف Outlook .msg:
from aspose.email.mapi import MapiCalendar, MapiCalendarState, MapiElectronicAddress
from aspose.email.calendar import AppointmentSaveFormat
from datetime import datetime, timezone
# Create a MapiCalendar appointment
appointment = MapiCalendar(
"LAKE ARGYLE WA 6743", # Location
"Appointment", # Subject
"This is a very important meeting :)", # Body
datetime(2024, 5, 10, 12, 30, 0, tzinfo=timezone.utc), # Start time (UTC)
datetime(2024, 5, 10, 13, 30, 0, tzinfo=timezone.utc) # End time (UTC)
)
# Set the organizer
appointment.organizer = MapiElectronicAddress()
appointment.organizer.email_address = "test@aaa.com"
appointment.organizer.display_name = "test display Name"
# Forcefully set the calendar state to Meeting | Received
appointment.set_state_forced(MapiCalendarState.MEETING | MapiCalendarState.RECEIVED)
# Save the appointment to a .msg file
appointment.save("appointment.msg", AppointmentSaveFormat.MSG)
عن طريق استدعاء set_state_forced, يمكنك يدويًا ضبط حالة العنصر التقويمي على قيمة محددة (مثل MapiCalendarState.RECEIVED). هذا مفيد بشكل خاص عندما تريد:
-
محاكاة طلب اجتماع مستلم.
-
الحفاظ على بيانات المنظم واللقاء عند حفظ الموعد كملف .MSG.
-
تخصيص سير عمل التقويم حيث يكون السلوك الافتراضي غير كافٍ.
ملاحظة: ضبط الحالة يدويًا باستخدام
set_state_forcedقد يؤثر على سلوك Outlook، مثل القدرة على إعادة توجيه أو إعادة إرسال الاجتماع. لذلك، يجب استخدامه بحذر وفقط عندما يكون ضروريًا لمنطق التطبيق الخاص بك.
إدارة ملفات التقويم
إضافة أو استرجاع المرفقات من ملفات التقويم
وحدة Aspose.Email Calendar ("ae.calendar") توفر أيضًا وظيفة إضافة واسترجاع معلومات المرفقات.
لإضافة مرفق إلى الموعد، اتبع الخطوات أدناه:
- إنشاء Attachment كائن ي提供 مسار الملف.
- أضف هذا المرفق إلى قائمة مرفقات الموعد.
- احفظ الموعد إلى مسار ملف محدد بصيغة iCalendar باستخدام save الطريقة وتنسيق الملف المناسب.
لاسترجاع المرفقات من موعد، اتبع الخطوات التالية:
- تحميل موعد من الملف المحفوظ باستخدام تحميل طريقة.
- استرجع عدد المرفقات في الموعد باستخدام الخاصية .attachments.length.
- تكرار عبر كل مرفق.
- اطبع اسم كل مرفق باستخدام الخاصية .name داخل الحلقة.
المقتطف البرمجي أدناه يوضح كيفية إنشاء مواعيد مع مرفقات، حفظها، واسترجاع معلومات المرفقات باستخدام وحدة "ae.calendar". يبرز ذلك الوظائف والقدرات للعمل مع المواعيد والمرفقات في تطبيق التقويم.
import aspose.email as ae
import datetime as dt
# Add an attachment to an appointment
attendees = ae.MailAddressCollection()
attendees.append(ae.MailAddress("attendee@domain.com", "Recipient 1"))
appointment = ae.calendar.Appointment("Room 112", dt.datetime(2023, 5, 27), dt.date(2023, 5, 28), ae.MailAddress("organizer@domain.com"), attendees)
attachment = ae.Attachment("D:\\Aspose\\Files\\Attachment.txt")
appointment.attachments.append(attachment)
appointment.save("D:\\Aspose\\Files\\appWithAttachments_out.ics", ae.calendar.AppointmentSaveFormat.ICS)
# Retrieve attachments from an appointment
appointment2 = ae.calendar.Appointment.load("D:\\Aspose\\Files\\appWithAttachments_out.ics")
print(appointment2.attachments.length)
for att in appointment2.attachments:
print(att.name)
استرجاع حالة المستلم من طلبات الاجتماع
Aspose.Email يتيح لك التعامل مع طلبات الاجتماعات، الممثلة ككائن MapiCalendar، واسترجاع حالة المستلم (تتبع الحضور) من هذه الطلبات. المقتطف البرمجي التالي يوضح لك كيفية تحديد حالة البريد الإلكتروني لكل مستلم:
تحويل مواعيد EML إلى MSG مع الحفاظ على جسم HTML
Aspose.Email يتيح تحويل موعد EML إلى MSG مع الحفاظ على جسم HTML. الخاصية forced_rtf_body_for_appointment لـ MapiConversionOptions الفئة تُستخدم لمعالجة نوع محتوى نص الموعد. عندما تُضبط على True، يتحول النص إلى صيغة RTF افتراضيًا. للاحتفاظ بالنص بصيغة HTML، يجب ضبطه على False. عينة الشفرة التالية توضح كيفية الحفاظ على جسم HTML للموعد عند تحويله من EML إلى MSG:
import aspose.email as ae
eml = ae.MailMessage.load("appointment.eml")
conversionOptions = ae.mapi.MapiConversionOptions()
conversionOptions.format = ae.mapi.OutlookMessageFormat.UNICODE
# default value for ForcedRtfBodyForAppointment is true
conversionOptions.forced_rtf_body_for_appointment = False
msg = ae.mapi.MapiMessage.from_mail_message(eml, conversionOptions)
print(f"Body Type: {msg.body_type}")
msg.save("appointment.msg")