쿼카러버의 기술 블로그

파이썬으로 이메일 보내는 방법 (텍스트 작성) [SMTP] (1/2) 본문

[Python]

파이썬으로 이메일 보내는 방법 (텍스트 작성) [SMTP] (1/2)

quokkalover 2019. 1. 3. 10:56

본 글에서는 지메일로 메일을 보내는 방법에 대해 다룰텐데, 다른 메일을 사용하고 싶어도

비슷한 방식을 활용할 수 있다.


파이썬을 활용하여 이메일을 보내기 위해서는 smtplib이라는 모듈을 사용해야 한다. 


smtplib란?

  정의 : smtplib모듈은 smtp 프로토콜을 사용해 메일을 보내는 데 사용할 수 있는 저수준 클라이언트 

         인터페이스를 말한다.


  쉬운 정의 : 메일을 보내기 위해 쓰는 모듈이라고 생각하면 된다. 



 SMTP란? (Simple Mail Transfer Protocol)


  - 쉬운 정의 : A의 이메일을 B에게 전송할 때 사용하는 메일 서버의 기본 프로토콜이다. 
                   인터넷 상에서 내가 사용하는 이메일 아이디를 사용해 이메일을 보내는데 사용되는 클라이언트로
                   이해하면 되겠다. 
  -> 그리고 이 SMTP의 서버를 SMTP서버라고 한다. 
   


 파이썬에서 smtp를 사용하는 방법 시작!


1단계: 필요한 모듈 추가

    (1) smtplib

    (2) MIMEText


코드 

import smtplib   # smtplib는 앞서 언급했듯이 smtp쓰기위해 필요한 모듈

from email.mime.text import MIMEText    # 메일을 보낼 때 메시지의 제목과 본문을 설정하기 위한 모듈


2단계: SMTP 보안설정


SMTP로 메일을 발송할 때 두가지 보안방식이 있는데, 하나는 SSL이고 다른하나는 TLS다. 

하나가 안될 때는 다른 보안 방식을 채택하는 것도 한 가지 방법이 될 수 있다. 

 - SSL로 통신할 때는 처음부터 암호화된 통신을 한다. 

   ->포트번호는 주로 465 

 - TLS는 hello메시지를 전달하고, 이 메시지를 주고받아   서로 암호화된 통신이 가능함을 확인한 뒤에 암호화된 

   통신을 시작한다. 

   ->포트번호는 주로 587


본 글에서는 SSL 보안설정을 사용하도록 하겠다. 


코드

 sm = smtplib.SMTP_SSL('smtp.gmail.com',465)


 ->이제 이 sm이라는 변수명을 통해 로그인도하고, 메일도 보내게 됨


 

3단계: 지메일 계정 로그인


코드 

sm.login('지메일 계쩡', '비밀번호')


 주의사항: 만약 지메일 계정을 다른 디바이스에서 사용하기 위해서는 IMAP설정을 해주어야 한다.

   ->이를 설정하지 않을 경우 로그인시도가 차단되어 메일을 보낼 수 없다. 

  IMAP 설정하는 방법은 아래와 같다. 

  

  1) 지메일 계정에 로그인 후 지메일 실행

  2) 오른쪽 상단의 톱니바퀴 모양의 아이콘을 누르고, 설정에 들어감

  3) 상단의 전달 및 POP/IMAP카테고리를 선택한 후 IMAP 액세스에서 IMAP 사용을 눌러준다. 

  


 4단계 : 메일 내용 보내기



 코드 :

1) 본문 부분

msg = MIMEText('body부분, 즉 본문 내용을 여기에 작성합니다.', 'html')

2) 제목 부분

msg['Subject'] = "제목 : 제목을 여기에 적어줍니다."

3) 내 계정 타이틀

msg['From'] = '내 이메일 외에 내가 적고싶은 나의 이메일 이름을 적어줍니다.' # 'Eun Taek'으로쓰면 'Eun Taek<나의 이메일계정>' 이렇게 보내지는것

4) 보내는 이 설정

msg['To'] = 받는 사람 메일 계정 적어주기. ,로 구분해야 해서

list1 = [A1, A2, A3] 이렇게 담아놓고

','.join(list1) 이렇게 넣어주는것도 한가지 방법이 될 수 있음

4) 보내기

sm.sendmail('보내는 이 계정', '받는 이 계정', msg.as_string()) #이건 위에서 로그인해놓은 sm을 사용해서 보냄

5) 보내고 세션 종료
sm.quit()

 아래는 전체 코드입니다. 




import smtplib   # smtplib는 앞서 언급했듯이 smtp쓰기위해 필요한 모듈

from email.mime.text import MIMEText    # 메일을 보낼 때 메시지의 제목과 본문을 설정하기 위한 모듈

sm = smtplib.SMTP_SSL('smtp.gmail.com',465)

sm.login('지메일 계쩡', '비밀번호')

msg = MIMEText('body부분, 즉 본문 내용을 여기에 작성합니다.', 'html')

msg['Subject'] = "제목 : 제목을 여기에 적어줍니다."

msg['From'] = '내 이메일 외에 내가 적고싶은 나의 이메일 이름을 적어줍니다.' # 'Eun Taek'으로쓰면 'Eun Taek<나의 이메일계정>' 이렇게 보내지는것

msg['To'] = '받는 사람 메일 계정 적어주기.' # ,로 구분해야 해서 list1 = [A1, A2, A3] 이렇게 담아놓고

                                                         # ','.join(list1) 이렇게 넣어주는것도 한가지 방법이 될 수 있음

sm.sendmail('보내는 이 계정', '받는 이 계정', msg.as_string()) #이건 위에서 로그인해놓은 sm을 사용해서 보냄

sm.quit()


 


위와 같이 전송시 내가 받는 메일 모습



본 글에서는 Text만 보내는 법을 적어보았으나 다음 게시글에서는

글 뿐만 아니라 사진, 혹은 파일을 어떻게 첨부하는지에 대해 알아보도록 하겠다. 






Comments