mailmail
xy_outlook(기초) - xy_outlook에대한 기본적인 사항들
작성자
sjpark
작성일
2025-03-29 18:09
조회
9
xy_outlook에 대하여
메일을 관리하는 outlook을 좀더 편하게 사용하기 쉽도록 만든 모듈입니다. 이 모듈은 xython의 기본 개념인 함수형으로 만들어졌으며, 주요 함수들을 사용하면서 outlook을 쉽게 사용하도록 하는 목적입니다밑에도 설명을 하겠지만, 전반적으로 먼저 알고있으면 좋을 부분을 나열하여 드립니다
- 폴더에 파일이 저장되듯이 메일은 같은 방식으로 저장됩니다
- top폴더와 대비하여 sub-folder 와 folder라는 이름은 가끔 혼용하여 사용됩니다
- 기본폴더는 “”를 사용하면 받은 편지함이 됩니다
- 날짜에 대한 기준은 00시00분 ~ 23시59분까지의 기간이다
- 메일의 집합형은 lsit형태가 아니다
- 삭제를 한다면 끝에서부터해야 문제가 안생긴다
- 새로운메일을 위한 table형식은 util의 make_table을 사용하기 바랍니다
메일 객체의 묶음에 대한 설명
1개 메일 객체 | <class 'win32com.client.CDispatch'> | 그리고 메일객체를 print를 하면 class에 정의가 된 것이 메일의 제목을 나타내도록 한 것 같습니다.
mail_set[0:2]와같이 사용이 불가능, 그래서 list(mail_set)[0:2]으로 사용하여야 합니다 |
여러 개의 메일 묶음 | <COMObject Restrict> |
그래서 2가지의 묶음을 구분해서 적용하려고 합니다
여러 개의 메일 묶음 (기본객체) | <COMObject Restrict> | mail_set |
사용자가 각 mail을 묶음으로 만든것 | list객체 | mail_list |
print("1. ", mail_set)
print("2. ", (mail_set))
for one_mail in list(mail_set)[0:2]:
print("3. ", type(one_mail))
print("4. ", one_mail)

단, mail_set[0:2]과같이 기본 묶음객체는 slice가 불가능하므로 list로 변경을 해서 사용하면 가능합니다
메일객체의 method와 속성
자주 사용하는 속성에 대해서 설명드리면 아래와 같습니다속성 | |
Application | Outlook 애플리케이션 객체를 반환 |
Attachments | 메일에 첨부된 파일 컬렉션을 반환 |
BCC | 숨은참조 |
Body | 내용 |
Categories | 메일 항목에 할당된 범주 목록 |
CC | 참조 |
Class | Outlook 항목의 클래스 |
Companies | 메일 항목과 연결된 회사이름 |
ConversationID | 메일 대화의 ID |
ConversationTopic | 대화 주제 |
CreationTime | 만든시간 |
DeferredDeliveryTime | 메일 배달 지연 시간을 반환하거나 설정
4501-01-01 00:00:00+00:00 (실제 메일의 예) |
EntryID | 고유한 id |
ExpiryTime | 4501-01-01 00:00:00+00:00 (실제 메일의 예) |
FormDescription | 메일 항목에 사용된 양식에 대한 설명 |
Importance | 메일 중요도 (높음, 보통, 낮음) |
IsConflict | 메일 항목이 충돌하는지 여부 |
IsMarkedAsTask | 메일 항목이 작업으로 표시되었는지의 여부 |
LastModificationTime | 메일 항목이 마지막으로 수정된 시간 |
MarkForDownload | 메일 항목의 다운로드 표시 상태 |
MessageClass | 메일 항목의 메시지 클래스 |
Mileage | 메일 항목의 마일리지 정보 |
NoAging | 메일 항목이 자동 보관 대상에서 제외되는지의 여부 |
OutlookInternalVersion | Outlook 내부 버전 번호를 반환합니다. |
OutlookVersion | Outlook 버전을 반환합니다. |
Parent | 어느 편지함에 있는것인지(받은 편지함) |
PropertyAccessor | 메일 항목의 속성에 접근할 수 있는 PropertyAccessor 객체를 반환합니다. |
ReceivedTime | 받은시간 |
Recipients | 받는 사람 목록 |
RemoteStatus | 메일 항목의 원격 상태 |
ReplyRecipients | 메일 항목에 대한 회신 받는 사람 목록 |
SaveSentMessageFolder | 보낸 메시지를 저장할 폴더 |
Sender | 보낸사람 |
SenderEmailAddress | 보낸 사람의 이메일 주소 |
SenderEmailType | 보낸 사람의 이메일 주소 유형 |
SenderName | 보낸사람 |
Sensitivity | 메일 보안 수준 (일반, 개인, 비공개, 기밀) |
Sent | 보냈는지 아닌지 |
SentOn | 보낸 날짜 및 시간 |
Size | 메일 크기 (바이트) |
Subject | 제목 |
TaskCompletedDate | 작업 완료 날짜 |
TaskDueDate | 작업 기한 |
TaskStartDate | 작업 시작 날짜 |
To | 받는 사람 |
UnRead | 메일 읽음 여부 (True: 읽지 않음, False: 읽음) |
UserProperties | 메일 항목의 사용자 정의 속성 컬렉션을 반환 |
method |
AddBusinessCard |
ClearConversationIndex |
ClearTaskFlag |
Close |
Copy |
Delete |
Display |
Forward |
GetConversation |
MarkAsTask |
Move |
PrintOut |
Reply |
ReplyAll |
Save |
SaveAs |
Send |
ShowCategoriesDialog |
all_property = ['Actions', 'AlternateRecipientAllowed', 'Application', 'Attachments', 'AutoForwarded',
'AutoResolvedWinner', 'BCC', 'BillingInformation', 'Body', 'BodyFormat', 'Categories',
'CC', 'Class', 'Companies', 'Conflicts', 'ConversationID', 'ConversationIndex', 'ConversationTopic',
'CreationTime', 'DeferredDeliveryTime', 'DeleteAfterSubmit', 'DownloadState', 'EntryID',
'ExpiryTime', 'FlagRequest', 'FormDescription', 'GetInspector', 'HTMLBody', 'Importance',
'InternetCodepage', 'IsConflict', 'IsMarkedAsTask', 'ItemProperties', 'LastModificationTime',
'MarkForDownload', 'MessageClass', 'Mileage', 'NoAging', 'OriginatorDeliveryReportRequested',
'OutlookInternalVersion', 'OutlookVersion', 'Parent', 'Permission', 'PermissionService',
'PermissionTemplateGuid', 'PropertyAccessor', 'ReadReceiptRequested', 'ReceivedByEntryID',
'ReceivedByName', 'ReceivedOnBehalfOfEntryID', 'ReceivedOnBehalfOfName', 'ReceivedTime',
'RecipientReassignmentProhibited', 'Recipients', 'ReminderOverrideDefault', 'ReminderPlaySound',
'ReminderSet', 'ReminderSoundFile', 'ReminderTime', 'RemoteStatus', 'ReplyRecipientNames',
'ReplyRecipients', 'RetentionExpirationDate', 'RetentionPolicyName', 'RTFBody', 'Saved',
'SaveSentMessageFolder', 'Sender', 'SenderEmailAddress', 'SenderEmailType', 'SenderName',
'SendUsingAccount', 'Sensitivity', 'Sent', 'SentOn', 'SentOnBehalfOfName', 'Session',
'Size', 'Subject', 'Submitted', 'TaskCompletedDate', 'TaskDueDate', 'TaskStartDate',
'TaskSubject', 'To', 'ToDoTaskOrdinal', 'UnRead', 'UserProperties', 'VotingOptions', 'VotingResponse']
mail_set= outlook.get_unread_mail_set_in_inbox_folder()
one_mail = list(mail_set)[0]
for one in all_property:
try:
value = getattr(one_mail, one)
print(one, value)
except:
pass
기본 내용
메일의 특성상 외부로 보내지는 형태이기 때문에, 하나의 형태안에 관련된 내용들이 다 들어가야 합니다. 이런 형형태인 것 기본적으로 배경을 알고 배워보시면 됩니다자동화를 위해서 아웃룩을 이용할때는 당연한 2가지를 알아야 합니다.
- 하나는 아웃룩의 기본적인 구조에 대한것과
- xy_outlook의 사용법을 알아야 합니다
- 모든 메일을 mail item이라는 객체를 만들어서 저장이 됩니다
- 단, mail item이외에도 약속을 나타내는 (promise용) 객체와 같은 것들이 사용됩니다
- 모든 mail item은 고유한 번호를 가진다
- mail item은 여러 폴더에 저장이 됩니다

아웃룩에서 하는 대부분의 자동화는 원하는 것을 골라내는 것부터 입니다
많은 부분에서 순서대로 갖고오거나 읽지 않은 것을 갖고오거나 우리가 원하는 목적에 맞는 것을 많은 것 안에서 갖고오는 것입니다
그런데, 처음에 들어온 곳에 그대로 있는 것이 아니라 이동이 되기 때문에 여러곳에서 찾아야하는기능들이 필요합니다
각 메일에는 많은 속성들이 있지만, 그중에서 원하는 부분들을 골라내고 찾아야 합니다
아웃룩의 구조
메일은 생각보다 간단한 구조를 갖고있는데, 상호간에 이동이 가능한 기능 때문에 폴더나 탐색 기능과 비슷하다라고 생각을 하셔도 됩니다메일을 사용해보신분은 아시겠이지만지만, 보낸편지함, 받은편지함등의 이름을 가진 폴더로 구분을 하고, 각각의 폴더안에는 메일이 있는 것입니다
그리고 보관을 위하여, 별도의 공간이 따로있는데, 그림으로 나타내보면 아래와 같습니다
