Mengelola Item Kalender Outlook

The MapiCalendar kelas dalam pustaka Aspose.Email menawarkan berbagai metode dan atribut untuk mengonfigurasi serta memanipulasi item kalender. Ini memungkinkan pengelolaan yang efektif dari item kalender Outlook, meningkatkan produktivitas dan organisasi. Berikut adalah bagian-bagian yang akan memandu Anda melalui berbagai aspek pengelolaan item kalender.

Membuat dan Menyimpan Item Kalender

Buat dan Simpan Item Kalender

Potongan kode berikut menunjukkan cara membuat dan menyimpan item kalender dalam format ICS:

  1. Tentukan jalur tempat file kalender Anda akan disimpan.
  2. Buat janji dengan menginisialisasi yang baru MapiCalendar objek dengan detail spesifik seperti lokasi, subjek, deskripsi, waktu mulai, dan selesai.
  3. Simpan janji yang dibuat sebagai file ICS di direktori yang ditentukan.
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)

Simpan Item Kalender sebagai MSG

Potongan kode berikut menunjukkan cara menyimpan item kalender sebagai MSG:

Tetapkan ID Produk untuk Konversi MapiCalendar ke ICS

Pustaka Aspose.Email memungkinkan Anda menyimpan MapiCalendar (sebuah item kalender) ke file ICS (iCalendar) dengan opsi khusus. Berikut properti akan memungkinkan Anda mempertahankan cap tanggal dan waktu asli yang terkait dengan item kalender dan menetapkan identifier produk dalam file ICS, misalnya menjadi "Foo Ltd", masing-masing:

  • ics_save_options.keep_original_date_time_stamp
  • ics_save_options.product_identifier

Identifier produk adalah bidang yang mengidentifikasi perangkat lunak atau layanan yang menghasilkan file ICS.

Berikut contoh kode yang memungkinkan Anda menetapkan ID produk saat menyimpan MapiCalendar ke format 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)

Hitung Total Acara Kalender

The CalendarReader kelas menyediakan fungsionalitas untuk membaca dan menganalisis data kalender dari file yang ditentukan. Dengan menginisialisasi objek CalendarReader, Anda dapat mengekstrak detail penting seperti jumlah total acara, versi kalender, metode yang digunakan, dan apakah kalender mencakup banyak acara. Berikut adalah potongan kode yang menggambarkan cara berinteraksi dengan data kalender dan memuat janji sebagai daftar lengkap acara:

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()

Tambahkan Pengingat Tampilan ke Item Kalender

Potongan kode berikut menunjukkan cara menambahkan pengingat tampilan ke kalender.

Tambahkan Pengingat Audio ke Item Kalender

Potongan kode berikut menunjukkan cara menambahkan pengingat audio ke kalender.

Tetapkan Status MapiCalendar Secara Eksplisit

Aspose.Email menyediakan metode untuk secara eksplisit menentukan status objek MapiCalendar, menggantikan perilaku default:

Saat objek MapiCalendar dibuat, secara otomatis diberikan status MapiCalendarState.MEETING. Ketika item diterima oleh penerima, status biasanya berubah menjadi MapiCalendarState.RECEIVED, dan kelas pesan diperbarui menjadi "IPM.Schedule.Meeting.Request".

Contoh kode berikut menunjukkan cara membuat janji rapat menggunakan Aspose.Email untuk Python melalui .NET, mengatur penyelenggara dan status kalender secara manual, serta menyimpan janji sebagai file 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)

Dengan memanggil set_state_forced, Anda dapat secara manual mengatur status item kalender ke nilai tertentu (misalnya, MapiCalendarState.RECEIVED). Ini sangat berguna ketika Anda ingin:

  • Simulasikan permintaan rapat yang diterima.

  • Pertahankan metadata penyelenggara dan pertemuan saat menyimpan janji ke file .MSG.

  • Sesuaikan alur kerja kalender di mana perilaku default tidak memadai.

Catatan: Menetapkan status secara manual dengan set_state_forced dapat memengaruhi perilaku Outlook, seperti kemampuan untuk meneruskan atau mengirim ulang pertemuan. Oleh karena itu, harus digunakan dengan hati-hati dan hanya bila diperlukan untuk logika aplikasi Anda.

Manajemen File Kalender

Tambah atau Ambil Lampiran dari File Kalender

Modul Aspose.Email Calendar ("ae.calendar") juga menyediakan fungsionalitas untuk menambahkan dan mengambil informasi lampiran.

Untuk menyertakan lampiran dengan janji, ikuti langkah di bawah ini:

  1. Buat sebuah Attachment objek yang menyediakan jalur file.
  2. Tambahkan lampiran ini ke daftar lampiran janji.
  3. Simpan janji ke jalur file tertentu dalam format iCalendar menggunakan save metode dan format file yang sesuai.

Untuk mengambil lampiran dari sebuah janji, lakukan langkah berikut:

  1. Muat janji dari file yang disimpan menggunakan muat metode.
  2. Ambil jumlah lampiran dalam janji menggunakan properti .attachments.length.
  3. Iterasi melalui setiap lampiran.
  4. Cetak nama setiap lampiran menggunakan properti .name dalam loop.

Potongan kode di bawah ini menunjukkan cara membuat janji dengan lampiran, menyimpannya, dan mengambil informasi lampiran menggunakan modul "ae.calendar". Ini menyoroti fungsionalitas dan kemampuan bekerja dengan janji dan lampiran dalam aplikasi kalender.

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)

Ambil Status Penerima dari Permintaan Rapat

Aspose.Email memungkinkan Anda bekerja dengan permintaan rapat, yang direpresentasikan sebagai objek MapiCalendar, dan mengambil status penerima (pelacakan kehadiran) dari permintaan rapat tersebut. Potongan kode berikut menunjukkan cara mengidentifikasi status email untuk setiap penerima:

Konversi Janji EML ke MSG sambil Mempertahankan Body HTML

Aspose.Email memungkinkan konversi janji EML ke MSG dan mempertahankan Body HTML. Properti forced_rtf_body_for_appointment dari MapiConversionOptions kelas digunakan untuk memanipulasi tipe isi janji. Ketika diatur ke True, isi akan dikonversi ke format RTF secara default. Untuk mempertahankan isi dalam format HTML, harus diatur ke False. Contoh kode berikut menunjukkan cara mempertahankan isi HTML janji saat mengkonversinya dari EML ke 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")