파이썬/프록젝트

파이썬 mini_project) 메일 자동화 프로그램 기능1

Jimyeung 2021. 7. 21. 00:43
728x90

기능1

메일 자동화 프로그램에는 여러가지 기능들이 들어갈 수 있겠지만 오늘 구현해볼 기능은 번역기능이다. 텍스트가 한글로 적힌 메일은 영어로, 영어가 적힌 메일은 영어로 번역해주는 프로그램은 구현해보자!


코드 구현에 앞서 코드에 필요한 클라이언트 아이디와 클라이언트 패스워드를 발급 받아야 한다.
네이버 디벨로퍼[https://developers.naver.com] 접속 후 간단한 양식 작성을 하고 내 어플리케이션을 만든 후 발급 받으면 된다.


먼저 필요한 라이브러리들을 호출해 준다.


from imap_tools import MailBox #imap_tools에서 메일 열람가능한 MailBox호출
import requests #요구사항등에  필요한 라이브러리 호출

Mailbox를 통해 사서함, 사서함암호화, 사서함 인스터스를 만들 수 있다.


def recieve_mail():                    #확인할 자신의 메일의 주소를 입력
    sender_id = input('메일계정을 입력해 주세요: ')
    sender_pw = input('계정 비밀번호를 입력해 주세요: ')

파일 보낼 자신의 메일 아이디와 패스워드를 input으로 작성할 수 있도록 해준다.


f 'naver' in sender_id:             #간단히 네이버와 구글계정만 사용할 수 있도록 설정
        imap_server = "imap.naver.com"
        print('naver')    
    elif 'google' in sender_id:
        print('google')
        imap_server = "imap.google.com"
    else:
        print('네이버 또는 구글 메일만 사용 가능합니다.\n메일 주소를 확인해 주세요')
        raise Exception('네이버 또는 구글 메일만 사용 가능합니다.')

    #수신할 때 필요한 네이버 imap주소를 입력(필요시 구글도 추가가능)
    imap_info = {
        "imap_server": imap_server,  # Imap 서버 주소
        "imap_user_id": sender_id,
        "imap_user_pw": sender_pw,
        "imap_port": 993 # Imap 서버 포트
        }
    #로그인하여 메일박스를 열어 검색할 수 있도록 해줌
    mailbox = MailBox(imap_info["imap_server"], imap_info["imap_port"])
    mailbox.login(sender_id , sender_pw, initial_folder="INBOX")

주석에 나와있지만 간단히 설명하면 imap에 대한 정보를 imap_info라는 딕셔너리를 만들어 키,벨류 값으로 쉽게 데이터를 추출할 수 있도록 만들었다.

    #limit: 최대 메일 갯수
    #reverse: True일 경우 최근 메일부터, False일 경우 과거 메일부터

    #끝에서 한가지 메일 추출, limit을 원하는 만큼 추출 가능
    for msg in mailbox.fetch(limit=1, reverse=True):
        print("제목:", msg.subject)
        print("발신자", msg.from_)
        print("수신자:", msg.to)

        print("본문", msg.text)
        print("="*100)

---이런식으로 출력---

최근에 온 메일을 추출할 수 있도록 구현, limit에 숫자를 변형해 원하는 만큼 추출할 수 있다. 그리고 메일을 뽑아냈을때 누구한테 오고 어떠한 내용을 번역할 것인지 쉽게 인지할 수 있도록 구현하였다.

        client_id = "M2TCtkuAE0f1_4eJTDeS" #발급받은 아이디와 비밀번호 입력
        client_secret = "QJ9CRWHp8i"

        lang = ''                    
        trans_lang = ''

        print("어떤 언어로 해석할지 선택해주세요:")
        choice = int(input("1:한국 2: 영어 \n"))     #어떤 언어로 입력받을지 선택할 값을 입력할 수 있도록 구현




        if choice == 1:   #1번 선택시 영어를 한글로
            lang = 'en'
            trans_lang = 'ko'
        elif choice == 2:   #2번 선택시 한글을 영어로
            lang = 'ko'
            trans_lang = 'en'
        else:
            print('잘못 입력했습니다.')
            raise Exception('1, 2 중 선택해주세요.')  #에러가 뜰시 종료가 안되도록 예외처리 해줌

        data = {'text' : msg.text,       #데이터에 들어갈 내용, 어떤언어에서 어떤언어로 바꾸고 싶은지 정보 입력
                'source' : lang,
            '   target': trans_lang}

        url = "https://openapi.naver.com/v1/papago/n2mt"
        header = {"X-Naver-Client-Id":client_id,
                "X-Naver-Client-Secret":client_secret}
        response = requests.post(url, headers=header, data= data)
        rescode = response.status_code

        if(rescode==200):
            print(f'번역: {response.json()["message"]["result"]["translatedText"]}') #우리 원하는 번역값을 출력
        else:    
            print("Error Code:" , rescode)        



        mailbox.logout()

recieve_mail()

주석을 참고하면 크게 어려움없이 구현할 수 있을것이다. 위에있는 코드들을 종합해보면 아래와 같은 결과값을 출력할 수 있다.

---------아래-----------