인프런 커뮤니티 질문&답변

superb1990님의 프로필 이미지

작성한 질문수

파이썬 Outlook 메일링 (에러가 납니다ㅠ)

23.02.06 23:26 작성

·

654

0


문제는 아래에서 IF문 첫번째 조건인 SenderEmailAddress에서 발생합니다.
이상한 건... 기존에 잘 실행이 되다가 며칠 뒤에 해보니 에러가 난다는 점입니다.ㅠㅠ
혹시나 해서 아나콘다, 파이썬 삭제/설치 반복했지만 안 되네요ㅠ

"에러구문"
Traceback (most recent call last):
  File "C:\Users\user\PycharmProjects\OutlookProject\main.py", line 32, in <module>
    if ((ms.SenderEmailAddress == "crm@ecredible.co.kr" and
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\win32com\client\dynamic.py", line 639, in __getattr__
    raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.SenderEmailAddress
""


import pandas as pd
import win32com.client as cli  # outlook API
from tabulate import tabulate
from datetime import datetime, time

tabulate.WIDE_CHARS_MODE = False

outlook = cli.Dispatch("Outlook.Application").GetNamespace("MAPI")  # 아웃룩
inbox = outlook.GetDefaultFolder(6)  # 받은편지함
msg = inbox.Items  # 메세지 정보
msg_counter = msg.count  # 전체 메세지 수
ms_counter = 0  # 검색된 메세지 수
print("전체 메세지 수 : " + str(msg_counter))

now = datetime.today().strftime("%Y-%m-%d %H:%M:%S")

fromdate = input("From (ex 2023-01-01 00:00:00) :")
todate = input("To (ex 2023-01-01 00:00:00) :")

# 협력사 DB 불러오기
supplierdf = pd.read_csv("SupplierDB.csv", encoding="cp949")
# print(supplierdf)

# 협력사 DB와 본문 매칭된 협력사 리스트 생성
findList = list()
findList_Rate_before = list()
findList_Rate_after = list()

ms = 0

for ms in msg:
    if ((ms.SenderEmailAddress == "crm@ecredible.co.kr" and
        str(ms.ReceivedTime) >= fromdate and
        str(ms.ReceivedTime) <= todate)
        ):
        # 특정 메일주소, 기간만!
        ms_counter = ms_counter + 1
        print("받은시간 : " + str(ms.ReceivedTime))
        print("보낸사람 : " + str(ms.SenderName))
        print("내용 : " + str(ms.Body))
        print("\n ================================================ \n")
        print("검색된 메세지 수 : " + str(ms_counter))

답변 1

0

Jiyeon P님의 프로필 이미지

2023. 03. 10. 13:20

ms.Class == 43 and ms.SenderEmailType == 'EX' and ms.Sender.GetExchangeUser() != None

위 조건일 때,

ms.Sender.GetExchangeUser().PrimarySmtpAddress == "crm@ecredible.co.kr"

이고,

ms.Class == 43 and ms.SenderEmailType == 'EX' and ms.Sender.GetExchangeUser() != None

위 조건이 아닐 때,

ms.SenderEmailAddress == "crm@ecredible.co.kr"

인 것으로 수정해서 해보세요.