PST Dosyalarında Takvim Öğelerini Yönetme

Takvim Etkinliklerini PST Dosyalarına Ekle

Yeni PST Dosyası Oluştur ve Alt Klasörler Ekle Bir PST dosyası oluşturup içinde alt klasörler eklemenin nasıl yapılacağını gösterdi. Aspose.Email ile mevcut ya da yeni oluşturulan bir PST dosyasının Takvim alt klasörüne bir MapiCalendar ekleyebilirsiniz. Aşağıda bir PST dosyasına MapiCalendar eklemek için adımlar verilmiştir:

  1. Bir oluştur MapiCalendar nesne.
  2. MapiCalendar özelliklerini bir kurucu ve metodlar kullanarak ayarlayın.
  3. Şu şekilde bir PST oluşturun PersonalStorage.create() metod.
  4. Kök klasöre erişerek ve ardından add_mapi_message_item() metodunu çağırarak PST dosyasının kökünde önceden tanımlı bir klasör (Takvim) oluştur.

Aşağıdaki kod örneği, bir MapiCalendar oluşturup yeni bir PST dosyasının takvim klasörüne eklemeyi gösterir:

Outlook Takvim Öğelerini ICS Dosyaları Olarak Kaydet

Bu makale, bir Outlook PST dosyasından takvim öğelerine nasıl erişileceğini ve bunları diske ICS formatında nasıl kaydedileceğini açıklar. Şunu kullanmanız gerekir: PersonalStorage ve MapiCalendar sınıflar takvim verilerini almak için. Takvim öğelerini kaydetmek için şu adımları izleyin:

  1. PST dosyasını şunu kullanarak yükleyin PersonalStorage sınıf.
  2. Takvim klasörüne gidin.
  3. Takvim klasöründeki mesaj koleksiyonunu al.
  4. mesaj koleksiyonunu döngüyle gez.
  5. Kullan PersonalStorage.extract_message() ile kişi bilgilerini elde etmek için yöntem MapiCalendar sınıf.
  6. Kullan MapiCalendar.save() her takvim öğesini diske ICS formatında kaydetmek için yöntem.

Aşağıdaki program, diskteki bir PST dosyasını yükleyip tüm takvim öğelerini ICS formatında kaydeder. Bu ICS dosyaları, standart ICS takvim dosyalarını destekleyen herhangi bir programda kullanılabilir. Microsoft Outlook’ta açıldığında, bir ICS dosyası aşağıdaki ekran görüntüsünde gösterildiği gibi görünür.

todo:image_alt_text

Aşağıdaki kod örneği, bir Outlook PST’den takvim öğelerini ICS formatına nasıl dışa aktaracağını gösterir:

ICS Dosyalarını Orijinal Zaman Damgalarıyla Kaydet

keep_original_date_time_stamp yöntemi, MapiCalendarIcsSaveOptions sınıf, takvim öğelerini bir ICS (iCalendar) dosyası olarak kaydederken orijinal tarih ve saat damgalarını korumayı sağlar. Aşağıdaki kod örneği bu yöntemin uygulanmasını gösterir:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

calendar_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.APPOINTMENTS)

for msg_info in calendar_folder.enumerate_messages():
    cal = pst.extract_message(msg_info).to_mapi_message_item()

    save_options = ae.mapi.MapiCalendarIcsSaveOptions()
    save_options.keep_original_date_time_stamp = True

    if not (cal is None):
      cal.save("cal.ics", save_options)

PST Dosyalarında Yinelenen Olayları Değiştir veya Sil

Aspose.Email for .NET API’yi kullanarak PST dosyalarındaki mevcut yineleme kalıplarına istisnalar ekleyebilir veya belirli oluşumları silebilirsiniz. Aşağıdaki kod örneği bu değişikliklerin nasıl yapılacağını gösterir:

from datetime import datetime, timedelta
from aspose.email.storage.pst import PersonalStorage, StandardIpmFolder, FileFormatVersion
from aspose.email.mapi import MapiCalendar, MapiCalendarEventRecurrence, \
    MapiCalendarDailyRecurrencePattern, MapiCalendarRecurrenceEndType, \
    MapiCalendarExceptionInfo, MapiCalendarRecurrencePatternType, \
    MapiRecipientCollection, MapiRecipientType

start_date = datetime.now().date()

recurrence = MapiCalendarEventRecurrence()
pattern = MapiCalendarDailyRecurrencePattern()
pattern.pattern_type = MapiCalendarRecurrencePatternType.DAY
pattern.period = 1
pattern.end_type = MapiCalendarRecurrenceEndType.NEVER_END
recurrence.recurrence_pattern = pattern

exception_date = start_date + timedelta(days=1)

# adding one exception
exception_info = MapiCalendarExceptionInfo()
exception_info.location = "London"
exception_info.subject = "Subj"
exception_info.original_start_date = exception_date
exception_info.start_date_time = exception_date
exception_info.end_date_time = exception_date + timedelta(hours=5)
pattern.exceptions.append(exception_info)
pattern.modified_instance_dates.append(exception_date)
# every modified instance also has to have an entry in the DeletedInstanceDates field with the original instance date.
pattern.deleted_instance_dates.append(exception_date)

# adding one deleted instance
pattern.deleted_instance_dates.append(exception_date + timedelta(days=2))

rec_coll = MapiRecipientCollection()
rec_coll.add("receiver@domain.com", "receiver", MapiRecipientType.TO)
new_cal = MapiCalendar(
    "This is Location",
    "This is Summary",
    "This is recurrence test",
    start_date,
    start_date + timedelta(hours=3),
    "organizer@domain.com",
    rec_coll
)
new_cal.recurrence = recurrence

with PersonalStorage.create("output.pst", FileFormatVersion.UNICODE) as pst:
    calendar_folder = pst.create_predefined_folder("Calendar", StandardIpmFolder.APPOINTMENTS)
    calendar_folder.add_message(new_cal)