예제> 파이썬에서 SMTP로 메일을 보내는 코드 테스트이다.
import smtplib
smtp = smtplib.SMTP('smtp.gmail.com',587)
print(type(smtp))
print(smtp.ehlo())
print(smtp.starttls())
print(smtp.login('지메일 아이디', '패스워드'))
smtp.sendmail('보내는 이메일 주소','받는 이메일 주소',
'Subject: TEST3 \n Take Care!')
smtp.quit()
GMAIL 설정은 좀 복잡해서 이 포스팅 하나에서 전부 다룰수는 없다. 먼저 사용할 지메일 계정의 IMAP 설정을 사용(ENABLED)으로 바꿔야 한다.
위 코드를 실행하면 메일 발송 성공 시에 아래와 같은 내용이 콘솔에 출력된다.
250, 220, 235 의 숫자가 서버에서 보낸 응답 결과이다. 이 과정에서 요청에 실패하면 예외 메시지를 볼 수 있다.
파이썬의 모듈로 지메일의 이메일 서버에 접속하여 메일을 보내는 것이다. 본인의 PC에 별도의 SMTP 서버를 구축할 수도 있겠지만 지메일에 계정이 있다면 구글의 SMTP 서버를 통해 메일을 보낼 수 있기 때문에 특수한 메일 서버를 구축할게 아니라면 그냥 Gmail을 쓰면 된다. 구글의 웹문서에 도움말들을 참고하여 코드를 수정한다.
sendmail 메서드로 내용을 담아 메일을 보낼 수 있다. 여기서는 간단하게 보내는 사람 주소와 받는 사람 주소, 그리고 제목만 보내는 것으로 테스트한다.
이메일의 다른 기능들은 python api docuementation 을 참고한다.
https://docs.python.org/3/library/smtplib.html
예제> IMAP 로 받은 이메일의 테스트이다.
import imapclient
import pprint
imap = imapclient.IMAPClient('imap.gmail.com', ssl=True)
print(imap.login('이메일 아이디', '이메일 패스워드'))
pprint.pprint((imap.list_folders()))
imap.select_folder('INBOX',readonly=True)
UID = imap.search(['FROM','보낸 이메일 아이디'])
print(UID)
msg = imap.fetch(UID,['BODY[]'])
print(msg)
imapclient는 외부 모듈이다. pip install 명령어로 설치한다.
마찬가지로 로그인 한다. 보안 설정은 ssl 에 한다.
폴더 리스트를 출력한 후 INBOX (구글의 받은 메일함)에 접속한다.
UID는 선택하려는 보낸 메일 주소이다.
fetch 는 가져오는 것이다. UID 로 검색한 주소에서 보낸 메일들의 본분을 가져온다.
print(msg)를 하더라도 거의 암호문 같은 코드들을 볼 수 있을 것이다.
필요한 메시지를 추리기 위해서는 pyzmail 같은 별도의 모듈과 작업이 필요하다. 여기서는 테스트가 목적이기 때문에 콘솔창에 무슨 메시지가 나오는지만 확인한다. 만약 요청이 실패하면 파이썬은 예외를 발생시킬 것이다.
(참고로 pyzmail 은 pip 인스톨이 잘 안되서 pyzmail36을 했더니 설치가 되었다. 설치했으면 import pyzmail 을 한다.
msg = imap.fetch(UID,['BODY[]'])
# msgPyz = pyzmail.PyzMessage.factory(msg[10]['BODY[]'])
# pprint.pprint(msg)
pyz = pyzmail.PyzMessage.factory(msg[565][b'BODY[]'])
print(pyz.get_subject())
print(pyz.get_addresses('from'))
print(pyz.get_addresses('to'))
print(pyz.text_part.get_payload().decode(str(pyz.text_part.charset)))
print(pyz.text_part.charset)
위의 코드는 pyzmail 의 테스트이다. 텍스트만 가져오기 위해서 decode 부분에 text_part를 사용했다.
스팀에서 보낸 이메일의 텍스트만 가져온 것이다. UID는 imap.search 를 통해서 알아내야 할 것이다.
하다보면 개별적 설정이 많아서 온라인 문서들과 API DOCUMENTATION을 참고하는 것이 좋다.
구글 검색시 python smtp tutorial 같은 검색어를 사용하면 찾을 수 있을 것이다.