Quản lý Các mục Lịch trong Tệp PST
Thêm Sự Kiện Lịch vào Tệp PST
Tạo Tệp PST Mới và Thêm Thư Mục Con đã trình diễn cách tạo một tệp PST và bao gồm các thư mục con bên trong. Với Aspose.Email, bạn cũng có thể thêm một MapiCalendar vào thư mục con Calendar của một tệp PST hiện có hoặc mới được tạo. Dưới đây là các bước để thêm MapiCalendar vào tệp PST:
- Tạo một MapiCalendar đối tượng.
- Đặt các thuộc tính của MapiCalendar bằng cách sử dụng một constructor và các phương thức.
- Tạo một PST bằng cách sử dụng PersonalStorage.create() phương thức.
- Tạo một thư mục đã định nghĩa trước (Calendar) ở gốc của tệp PST bằng cách truy cập thư mục gốc và sau đó gọi phương thức add_mapi_message_item().
Đoạn mã dưới đây cho bạn thấy cách tạo một MapiCalendar và sau đó thêm nó vào thư mục lịch của một tệp PST mới được tạo:
Lưu Các Mục Lịch Outlook dưới dạng Tệp ICS
Bài viết này giải thích cách truy cập các mục lịch từ tệp Outlook PST và lưu chúng vào đĩa ở định dạng ICS. Bạn sẽ cần sử dụng PersonalStorage và MapiCalendar lớp để lấy dữ liệu lịch. Thực hiện các bước sau để lưu các mục lịch:
- Tải tệp PST bằng cách sử dụng PersonalStorage lớp.
- Điều hướng tới thư mục Calendar.
- Lấy bộ sưu tập tin nhắn từ thư mục Calendar.
- Lặp qua bộ sưu tập tin nhắn.
- Sử dụng PersonalStorage.extract_message() phương thức để lấy thông tin liên hệ trong MapiCalendar lớp.
- Sử dụng MapiCalendar.save() phương thức để lưu mỗi mục lịch vào đĩa ở định dạng ICS.
Chương trình dưới đây tải một tệp PST từ đĩa và lưu tất cả các mục lịch ở định dạng ICS. Các tệp ICS này sau đó có thể được sử dụng trong bất kỳ chương trình nào khác hỗ trợ các tệp lịch tiêu chuẩn ICS. Khi mở trong Microsoft Outlook, một tệp ICS sẽ hiển thị như trong ảnh chụp màn hình dưới đây.
![]() |
|---|
Đoạn mã dưới đây minh họa cách xuất các mục lịch từ Outlook PST sang định dạng ICS:
Lưu Tệp ICS với Dấu Thời Gian Gốc
Phương thức keep_original_date_time_stamp của MapiCalendarIcsSaveOptions lớp cho phép giữ nguyên dấu thời gian ngày giờ gốc của các mục lịch khi lưu chúng dưới dạng tệp ICS (iCalendar). Mẫu mã sau trình bày việc triển khai phương thức này:
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)
Sửa Đổi hoặc Xóa Các Lần Lặp trong Tệp PST
Bạn có thể thêm ngoại lệ vào các mẫu lặp lại hiện có hoặc xóa các lần xuất hiện cụ thể trong tệp PST bằng cách sử dụng Aspose.Email cho .NET API. Đoạn mã dưới đây minh họa cách thực hiện các sửa đổi như vậy:
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)
