왕초보를 위한 Python 2.7 12. 인터넷 12.1. 전자우편(POP3)

12.1. 전자우편(POP3)

* 예제도, 글도 낡아버렸네요. 좀 고쳐 써야겠습니다.

이번에는 인털네~엣 시간입니다. 인터넷으로 할 수 있는 일도 여러 가지가 있죠? 우리가 주로 이용하는 것으로는 온라인 게임, 정보 검색, 동영상 보기, 채팅, 메일, 파일 주고 받기 정도가 있겠네요. 지금은 복잡하게만 보이는 것들이지만 몇 가지 기술을 조합하면 만들어낼 수 있을 테니까 앞으로 그 구성요소에는 어떤 것들이 있는지 살펴보도록 하죠.

처음으로 해볼 것은 인터넷을 통해 전자우편을 주고받는 프로그램입니다. 다른 것에 비해서는 만만해보이더라구요.^^;

메일을 주고받는 원리는 어떤 것일까요? 우리가 종이에 편지를 써서 친구에게 보낼 때는 어떻게 하죠? 편지를 써서 봉투에 넣고, 봉투에 주소도 쓰고 우표도 붙여서 집 근처 우체통에 넣습니다. 그러면 우체국에서 일하시는 분들이 친구네 집까지 편지를 배달해주지요. 우리는 우체국에서 구체적으로 어떤 일을 하는지는 잘 모르지만, 어쨌든 편지는 배달됩니다.

그럼 그 친구가 편지를 받을 때는 어떻게 하죠? 집배원 아저씨가 집 앞에 있는 우편함에 편지를 넣어주면 겜방 갔다오는 길에 우편함을 뒤져서 편지를 찾겠죠? 편지봉투에 우리 주소와 이름이 쓰여진 것을 보고 흐뭇한 마음으로 봉투를 뜯어볼테구요.

전자우편도 이와 거의 비슷한 원리로 전송된다고 생각하시면 됩니다. 메일을 보낼 때는 아웃룩과 같은 메일 프로그램으로 받을 사람의 주소와 이름, 사연을 써서 우체통 역할을 하는 SMTP 서버에 넣어줍니다. SMTP는 Simple Mail Transfer Protocol의 줄임말로 우리말로는 간단한 메일 전송 규약이란 뜻이구요, 서버(server)는 어떤 서비스를 제공하는 컴퓨터라는 뜻입니다.

그러니까 SMTP 서버란 간단한 메일 전송 서비스를 제공하는 컴퓨터로군요. 역시 우체통이라고 생각하면 딱 맞겠네요. 그리고, 집 앞의 우편함 역할을 하는 것은 POP3 서버라는 것입니다. POP는 Post Office Protocol, 우체국 규약이군요.^^;

SMTP 서버와 POP3 서버가 있다면 우리 컴퓨터는 뭐라고 불러야할까요? 서비스를 제공하는 쪽을 서버라고 한다면, 그 서비스를 사용하는 쪽은 클라이언트(client)라고 합니다. 그래서 아웃룩과 같은 프로그램을 e-메일 클라이언트라고 부르지요.

그럼 실제로 파이썬에서 SMTP와 POP3를 어떻게 이용하는지 실습을 통해 알아봅시다.

전자우편 계정 얻기

실습을 해보려면 우선 SMTP와 POP3 서버를 사용할 수 있는 전자우편 계정이 있어야겠죠? 포탈 사이트에 가입하면 전자우편을 사용할 수 있긴 하지만, 요즘은 웹사이트에 접속한 상태에서 메일을 사용하는 웹메일만 제공하고 SMTP와 POP3는 별도로 제공하지 않는 곳이 많더군요.

한메일, 네이버, 프리챌에서는 SMTP와 POP3 둘 다 제공하지 않고, 네띠앙에서는 POP3만 제공합니다. 또, 인티즌에서는 특이하게 IMAP이라는 것을 쓰고, 핫메일에서는 아웃룩만 쓸 수 있는 것 같구요. 다행히 야후! 코리아에서는 두 서비스를 다 제공하더군요. 저도 실습할 만한 계정이 없었던 터라 가입했지요.

그런데 야후!에서는 광고 메일을 받아보는 ‘보내미’라는 것을 이용해야만 우리가 원하는 것을 얻을 수 있으니까 야후! 메일의 왼쪽 메뉴의 옵션을 클릭하셔서 야후! 보내미 회원에 등록하시기 바랍니다. 본의 아니게 광고를 해드렸네요. 관계자께서 이 강좌를 보신다면 모종의 사례를…*^^*

대화식으로 메일 읽기

이제 메일 계정을 얻으셨으면 파이썬으로 메일을 읽어보겠습니다. 메일을 받는 우편함은 POP3라고 했죠? 파이썬에서는 poplib이라는 모듈을 이용해서 POP3에 관련된 일을 할 수 있습니다.

대화식으로 메일을 읽어보면서 poplib을 어떻게 쓰는 건지 감을 잡아보는 것도 괜찮겠죠?

 

>>> import poplib
>>> pop = poplib.POP3('pop.mail.yahoo.co.kr')

 

먼저 poplib을 불러온 다음, 야후!의 POP3 서버 주소를 가지고 pop 객체를 만들었습니다. 우리가 앞으로 편지를 얻어올 서버를 pop이라고 부르기로 한 것이죠.

당연한 얘기지만, POP3 서버 주소는 각자 사용하시는 메일 계정에 따라 다르니까 계정을 얻은 곳의 POP3 서버 주소를 알아보고 입력하시기 바랍니다.

우리가 위와 같이 써주기만 하면 컴퓨터가 인터넷에 연결되어서 POP3 서버에도 접속됩니다. 저처럼 전화 모뎀을 쓰는 분은 인터넷에 연결하는 창이 방금 떴을 거예요.

pop에 접속이 잘 됐는지 인사말을 들어볼까요?

 

>>> print pop.getwelcome()
+OK hello from popgate

 

OK라고 하는 걸로 봐서 접속이 잘 된 것 같네요. 로그인도 해볼까요?

 

>>> pop.user('overflying')
'+OK password required.'
>>> pop.pass_('1234')
'+OK maildrop ready, 6 messages (5895 octets) (6594 6291456)'

 

사용자 ID와 비밀번호를 차례로 넣어주고나니 여섯 개의 메시지가 있다고 안내를 해주는군요. 그럼 여섯번째 메시지를 읽어보겠습니다.

 

>>> pop.retr(6)

 

이렇게 해주면 메시지의 내용을 볼 수 있지요. 복잡한 글들이 마구 쏟아지는군요… 이것만 잘 요리하면 메일 내용을 읽어보는 건 쉽게 해결될 것 같네요.

어려운 것 같아도 알고 나니까 별 것 아니군요. 음… 음… 음하하하~ ^O^(박경림 버전)

마지막 수정일 : 2011년 2월 20일 2:23:23 오후
  • Commented by 병태 at 2012년 12월 4일 11:09:46 오전 [x]

    import poplib
    a = poplib.POP3_SSL('pop.naver.com',995)
    print a.getwelcome()
    a.user('xxxxx')
    a.pass_('xxxxx')

    요즘은 전부 SSL을 사용하니까 위와 같이 하니까 로그인이 되네요.

이 름 :
홈페이지 :
비밀번호 :
검색구분 :
최근변경이력