본문 바로가기
IT/파이썬

[IMAP] 메일 내용 추출 (python2.7)

by 옥탑방개발자 2020. 7. 3.
728x90

IMAP

IMAP와 POP3는 아웃룩(Outlook), 썬더버드(Thunderbird), 안드로이드 기본 이메일 앱과 같은 메일 클라이언트에서 이메일에 접속하고자 할 때 사용하는 프로토콜입니다. IMAP의 경우 메일서버에 클라이언트가 접속해서 메일확인  가능.

 

1.  Gmail IMAP 설정

 

 

 

2. 코딩

#-*- coding:utf-8 -*-

import base64
import imaplib
import email
import email.header

def findEncodingInfo(txt):
        info = email.header.decode_header(txt)
        s, encoding = info[0]
        return s, encoding


imap = imaplib.IMAP4_SSL('imap.gmail.com')
id = "hyunwook429@gmail.com"
pw = "jokupqlyhrghfunv"
imap.login(id, pw)

imap.select('inbox')

#하나 x
#다수
#전체 'All'

resp, data = imap.uid('search', None, 'All')
#print resp ==> OK
#print data ==> 메일

#data로 만들어진 하나의 배열 안에 각각의 데이터를  구분하기
all_email = data[0].split()
print all_email

for mail in all_email:
        result, data = imap.uid('fetch', mail, '(RFC822)')
        raw_email = data[0][1]
#       print raw_email.decode("UTF-8")
        print "="*80

        email_message = email.message_from_string(raw_email.decode('utf-8'))
#       print email_message

        print "FROM:", email_message['From']
        print "SENDER:", email_message['Sender']
        print "TO:", email_message['To']
        print "DATE:", email_message['Date']

        b, encode = findEncodingInfo(email_message['Subject'])
        print "SUBJECT:", b
        print "DECODE:", encode
        print "CONTENT:"
		print "="*80
		if email_message.is_multipart(): #email_message가 리스트면 True반환
			for part in email_message.get_payload():
				if part.get_content_type() =='text/plain':
					bytes=part.get_payload(decode = True)
					encode=part.get_content_charset()
					print str(bytes)
					print str(encode)
			print "="*80



imap.close()
imap.logout()

 

 

  • IMAP서버에서 확인한 이메일

 

 

  • Gmail 웹에서 확인한 이메일

728x90