مدیریت موارد تقویم Outlook

این MapiCalendar کلاسی در کتابخانه Aspose.Email روش‌ها و ویژگی‌های مختلفی برای پیکربندی و دستکاری موارد تقویم فراهم می‌کند. این امکان مدیریت مؤثر موارد تقویم Outlook را فراهم می‌سازد و بهره‌وری و سازماندهی را ارتقا می‌دهد. در ادامه بخش‌هایی آورده شده است که شما را در جنبه‌های مختلف مدیریت موارد تقویم راهنمایی می‌کند.

ایجاد و ذخیرهٔ موارد تقویم

ایجاد و ذخیره موارد تقویم

قطعه کد زیر نشان می‌دهد چگونه یک مورد تقویم را ایجاد و در قالب ICS ذخیره کنید:

  1. مسیر ذخیره‌سازی فایل تقویم خود را تعریف کنید.
  2. یک قرار ملاقات ایجاد کنید با مقداردهی اولیه یک MapiCalendar شیئی با جزئیات خاص مانند مکان، موضوع، توضیح، زمان شروع و پایان.
  3. قرار ملاقات ایجاد شده را به عنوان فایل 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 را تولید کرده است شناسایی می‌کند.

در اینجا نمونه کدی آورده شده است که به شما امکان تنظیم شناسه محصول (Product ID) هنگام ذخیره 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 را تعریف کنید و رفتار پیش‌فرض را نادیده بگیرید:

هنگامی که یک شیء MapiCalendar ایجاد می‌شود، به‌صورت خودکار وضعیت MapiCalendarState.MEETING به آن اختصاص می‌یابد. وقتی مورد توسط گیرنده دریافت می‌شود، وضعیت معمولاً به MapiCalendarState.RECEIVED تغییر می‌کند و کلاس پیام به "IPM.Schedule.Meeting.Request" به‌روزرسانی می‌شود.

نمونه کد زیر نشان می‌دهد چگونه یک قرار ملاقات جلسه‌ای را با استفاده از Aspose.Email برای Python از طریق .NET ایجاد کنید، سازمان‌دهنده و وضعیت تقویم را به‌صورت دستی تنظیم کنید و قرار ملاقات را به عنوان فایل .msg Outlook ذخیره کنید:

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 ("ae.calendar") همچنین امکان افزودن و استخراج اطلاعات پیوست را فراهم می‌کند.

برای اضافه کردن پیوست به قرار ملاقات، مراحل زیر را دنبال کنید:

  1. یک Attachment شیئی که مسیر فایل را فراهم می‌کند.
  2. این پیوست را به فهرست پیوست‌های قرار ملاقات اضافه کنید.
  3. قرار ملاقات را به مسیر فایل مشخصی در قالب iCalendar با استفاده از ذخیره متد و قالب فایل مناسب.

برای دریافت پیوست‌ها از یک قرار ملاقات، مراحل زیر را انجام دهید:

  1. یک قرار ملاقات را از فایل ذخیره شده با استفاده از بارگذاری متد.
  2. تعداد پیوست‌های موجود در قرار ملاقات را با استفاده از ویژگی .attachments.length بازیابی کنید.
  3. از هر پیوست عبور کنید.
  4. نام هر پیوست را با استفاده از ویژگی .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")