PST Dosyasında Takvim Öğeleriyle Çalışma
PST’ye MapiCalendar Ekleme
Yeni Bir PST Dosyası Oluşturma ve Alt Klasörler Ekleme bir PST dosyası oluşturmayı ve ona bir alt klasör eklemeyi gösterdi. Aspose.Email ile oluşturduğunuz veya yüklediğiniz bir PST dosyasının Calendar alt klasörüne MapiCalendar ekleyebilirsiniz. Aşağıda bir PST’ye MapiCalendar eklemek için adımlar verilmiştir:
- Bir MapiCalendar nesnesi oluşturun.
- MapiCalendar özelliklerini bir kurucu ve metodlar kullanarak ayarlayın.
- PersonalStorage.create() yöntemiyle bir PST oluşturun.
- 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 (Calendar) oluşturun.
Aşağıdaki kod parçacığı, bir MapiCalendar oluşturmayı ve ardından yeni oluşturulan bir PST dosyasının takvim klasörüne eklemeyi gösterir.
Takvim Öğelerini PST’den Disk’e ICS Formatında Kaydetme
Bu makale, bir Outlook PST dosyasından takvim öğelerine nasıl erişileceğini ve takvimi disk’e ICS formatında nasıl kaydedileceğini gösterir. Takvim bilgilerini almak için PersonalStorage ve MapiCalendar sınıflarını kullanın. Takvim öğelerini kaydetmek için adımlar şunlardır:
- PST dosyasını PersonalStorage sınıfında yükleyin.
- Takvim klasöründe gezin.
- Takvim klasörünün içeriğini alarak mesaj koleksiyonunu elde edin.
- mesaj koleksiyonunu döngüyle gez.
- PersonalStorage.extract_message() metodunu çağırarak MapiCalendar sınıfındaki iletişim bilgilerini alın.
- MapiCalendar.save() metodunu çağırarak takvim öğesini ICS formatında diske kaydedin.
Aşağıdaki program, bir PST dosyasını diskte yükler ve tüm takvim öğelerini ICS formatında kaydeder. ICS dosyaları, standart ICS takvim dosyasını yükleyebilen herhangi bir programda kullanılabilir. Microsoft Outlook’ta açılan bir ICS dosyası aşağıdaki ekran görüntüsü gibi görünür.
|
| | :- | Aşağıdaki kod parçacığı, Outlook PST’den takvim öğelerini ICS formatına nasıl dışa aktaracağınızı gösterir.
Orijinal Zaman Damgası ile ICS Kaydetme
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)
Tekrarlamalardan Oluşumları Değiştir/Sil
İstisnalar, Aspose.Email for .NET API kullanılarak mevcut yinelenenlere eklenebilir. Aşağıdaki kod örneği bu özelliğin kullanımı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)