【자동화】Python으로 Outlook 메일 로드
아날로그 작업을 자동화하고 싶습니다.
나의 일상 업무 중에, Outlook에서 수신한 메일중의 「문의 번호」 「문의 타이틀」 「URL」 작업이 있습니다.
이 작업을 어떻게 하면 자동화할 수 없을까 생각하고 먼저 시작으로 Outlook에서 수신한 메일을 Python으로 로드하는 것입니다.
여러가지 조사해 보았습니다만, 별로 정보가 없고 시행착오하면서 어떻게든 할 수 있었으므로, 비망록도 겸해 정보를 남겨 둡니다.
(내 집의 Office는 매우 오래되었고 Outlook 2007입니다 ...
최종 코드는 매우 간단합니다.
파이썬으로 Outlook 메일 로드
전제
전제로 내 Outlook의 메일 폴더는 다음과 같습니다.
크게 말하면,
1. 개인 폴더
2. Yahoo 메일 폴더
가 있고 그 안이 더 많은 폴더로 나뉩니다.
이번에는 「2. Yahoo 메일의 계정 폴더」의 「받은 편지함」의 메일을 읽고 싶습니다.
폴더 로드
outlook을 조작하려면 win32com.client를 가져와야합니다.
나는 Anaconda를 사용하고 있지만 특히 추가로 설치하지 않고도 가져올 수있었습니다.
import win32com.client
그런 다음 Outlook 개체를 만듭니다.
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
이 outlook이라는 객체는 Folders라는 속성을 가지고 있으며, 이것이 「1. 개인 폴더」 「2. Yahoo 메일의 계정 폴더」에 대응하고 있습니다.
accounts = outlook.Folders
for account in accounts:
print(account)
결과
個人用フォルダ
**********@yahoo.co.jp
이 account라는 것은 Folders라는 속성을 더 가지고 있으며, 이것이 아래의 계층의 폴더에 대응하고 있습니다.
여기까지 정리하면
print("root (アカウント数=%d)" % accounts.Count)
for account in accounts:
print("└ ",account)
folders = account.Folders
for folder in folders:
print(" └ ",folder)
실행 결과
root (アカウント数=2)
└ 個人用フォルダ
└ 削除済みアイテム
└ 受信トレイ
└ 送信トレイ
└ 送信済みアイテム
└ 予定表
└ 連絡先
└ 履歴
└ メモ
└ 仕事
└ 下書き
└ RSS フィード
└ 迷惑メール
└ **********@yahoo.co.jp
└ 受信トレイ
└ Bulk Mail
└ Draft
└ Sent
└ Trash
이외에 간단하네요.
메일 로드
최종적으로 얻은 folder안에 실제의 메일이 들어 있는 것입니다만, 이 folder는 Items라고 하는 속성을 가지고 있어 이것이 「메일」에 대응하고 있습니다.
Items에서 얻은 메일은 이터러블 객체이므로 for문으로 하나씩 꺼냅니다.
mails = folder.Items
for mail in mails:
print("件名: " ,mail.subject)
print("差出人: %s [%s]" % (mail.sendername, mail.senderEmailAddress))
print("受信日時: ", mail.receivedtime)
print("未読: ", mail.Unread)
print("本文: ", mail.body)
속성
의미
mail.subject
제목
mail.sendername
보낸 사람 이름
mail.senderEmailAddress
보낸 사람의 이메일 주소
mail.receivedtime
수신 일시
mail.body
본문
mail.Unread
읽지 않은 플래그
그러면 이런 느낌으로 메일 내용을 얻을 수 있다는 것을 알 수 있습니다.
件名: これはテストです
差出人: *** [*******@gmail.com]
受信日時: 2020-05-30 07:17:33+00:00
未読: False
本文: ちゃんと受け取れてますか?
요약
마지막으로 코드를 정리해 둡니다.
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
accounts = outlook.Folders
print("root (アカウント数=%d)" % accounts.Count)
for account in accounts:
print("└ ",account)
folders = account.Folders
for folder in folders:
print(" └ ",folder)
mails = folder.Items
for mail in mails:
print("-----------------")
print("件名: " ,mail.subject)
print("差出人: %s [%s]" % (mail.sendername, mail.senderEmailAddress))
print("受信日時: ", mail.receivedtime)
print("未読: ", mail.Unread)
print("本文: ", mail.body)
실행 결과
root (アカウント数=2)
└ 個人用フォルダ
└ 削除済みアイテム
└ 受信トレイ
└ 送信トレイ
└ 送信済みアイテム
└ 予定表
└ 連絡先
└ 履歴
└ メモ
└ 仕事
└ 下書き
└ RSS フィード
└ 迷惑メール
└ **********@yahoo.co.jp
└ 受信トレイ
-----------------
件名: これはテストです
差出人: *** [*******@gmail.com]
受信日時: 2020-05-30 07:17:33+00:00
未読: False
本文: ちゃんと受け取れてますか?
프로그램을 exe 파일로 만들려면
Python 프로그램을 exe 파일로 만들려면 여기를 참조하십시오.
【자동화】Python 코드를 exe 파일화한다
htps : // 이 m / 여기에서 ch913 / ms / 6259f13에 057bc25에 bc23
Reference
이 문제에 관하여(【자동화】Python으로 Outlook 메일 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/konitech913/items/8a285522b0c118d5f905텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)