Outlook 캘린더 항목 관리
다음은 MapiCalendar 클래스는 Aspose.Email 라이브러리에서 캘린더 항목을 구성하고 조작할 수 있는 다양한 메서드와 속성을 제공합니다. 이를 통해 Outlook 캘린더 항목을 효과적으로 관리하여 생산성과 조직을 향상시킵니다. 아래 섹션은 캘린더 항목 관리의 다양한 측면을 안내합니다.
캘린더 항목 생성 및 저장
캘린더 항목 생성 및 저장
다음 코드 스니펫은 캘린더 항목을 ICS 형식으로 생성하고 저장하는 방법을 보여줍니다:
- 캘린더 파일이 저장될 경로를 정의합니다.
- 새로운 객체를 초기화하여 약속을 생성합니다 MapiCalendar 위치, 제목, 설명, 시작 및 종료 시간과 같은 특정 세부 정보를 가진 객체.
- 생성된 약속을 지정된 디렉터리의 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로 변환할 때 제품 ID 설정
Aspose.Email 라이브러리를 사용하면 MapiCalendar(캘린더 항목)를 특정 옵션과 함께 ICS(iCalendar) 파일로 저장할 수 있습니다. 다음은 속성 캘린더 항목과 연관된 원래 날짜 및 시간 스탬프를 유지하고, 예를 들어 "Foo Ltd"와 같이 제품 식별자를 ICS 파일에 설정할 수 있게 해줍니다:
- ics_save_options.keep_original_date_time_stamp
- ics_save_options.product_identifier
제품 식별자는 ICS 파일을 생성한 소프트웨어 또는 서비스를 식별하는 필드입니다.
다음 코드는 MapiCalendar를 ICS로 저장할 때 제품 ID를 설정하는 예시입니다:
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 객체의 상태를 명시적으로 정의하여 기본 동작을 재정의하는 메서드를 제공합니다:
- void MapiCalendar.set_state_forced(MapiCalendarState state) - 특히 수신된 회의 요청을 처리할 때 캘린더 항목의 상태를 보다 세밀하게 제어할 수 있습니다.
MapiCalendar 객체가 생성될 때 자동으로 상태 MapiCalendarState.MEETING이 할당됩니다. 항목이 수신자에게 전달되면 상태가 일반적으로 MapiCalendarState.RECEIVED로 변경되고 메시지 클래스가 "IPM.Schedule.Meeting.Request"로 업데이트됩니다.
다음 코드 샘플은 .NET을 통해 Python용 Aspose.Email을 사용하여 회의 약속을 생성하고, 주최자와 캘린더 상태를 수동으로 설정한 뒤, 약속을 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)
다음 호출을 통해 set_state_forced, 캘린더 항목의 상태를 특정 값(예: MapiCalendarState.RECEIVED)으로 수동 설정할 수 있습니다. 이는 특히 다음을 원하는 경우에 유용합니다:
-
수신된 회의 요청을 시뮬레이션합니다.
-
.MSG 파일로 약속을 저장할 때 주최자와 회의 메타데이터를 보존합니다.
-
기본 동작으로 충분하지 않을 때 캘린더 워크플로를 맞춤 설정합니다.
참고: 상태를 수동으로 설정할 때
set_state_forcedOutlook 동작에 영향을 줄 수 있으며, 예를 들어 회의를 전달하거나 재전송하는 기능에 영향을 줄 수 있습니다. 따라서 신중하게 사용해야 하며 응용 프로그램 로직에서 필요할 때만 사용해야 합니다.
캘린더 파일 관리
캘린더 파일에서 첨부 파일 추가 또는 가져오기
Aspose.Email Calendar ("ae.calendar") 모듈은 첨부 파일 정보를 추가하고 가져오는 기능도 제공합니다.
약속에 첨부 파일을 포함하려면, 아래 단계를 따르세요:
- 생성합니다 Attachment 파일 경로를 제공하는 객체.
- 이 첨부 파일을 약속의 첨부 파일 목록에 추가합니다.
- iCalendar 형식으로 특정 파일 경로에 약속을 저장합니다 저장 메서드와 적절한 파일 형식.
약속에서 첨부 파일을 가져오려면, 다음 단계를 따르세요:
- 저장된 파일을 사용하여 약속을 로드합니다 로드 메서드.
- .attachments.length 속성을 사용하여 약속의 첨부 파일 수를 가져옵니다.
- 각 첨부 파일을 반복합니다.
- 반복문 내에서 .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로 설정해야 합니다. 다음 코드 샘플은 EML을 MSG로 변환할 때 약속의 HTML 본문을 보존하는 방법을 보여줍니다:
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")