【자동화】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

좋은 웹페이지 즐겨찾기