쿼카러버의 기술 블로그
파이썬으로 이메일 보내는 방법 (텍스트 작성) [SMTP] (1/2) 본문
본 글에서는 지메일로 메일을 보내는 방법에 대해 다룰텐데, 다른 메일을 사용하고 싶어도 비슷한 방식을 활용할 수 있다. 파이썬을 활용하여 이메일을 보내기 위해서는 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() | |||
아래는 전체 코드입니다. | |||
| |||
위와 같이 전송시 내가 받는 메일 모습
|
'[Python]' 카테고리의 다른 글
[python] anaconda 가상환경 만들 때 주의사항 (0) | 2022.01.27 |
---|---|
[Python Advanced] Collections 라이브러리 1탄 : Counter (Pythonic하게 Count하는 법) (0) | 2022.01.20 |
파이썬으로 이런것도 가능해?(cross-platform, shell script, 리액트 개발) (pyodide, shellpy, kivy, pythonfire) (0) | 2022.01.01 |
이스케이프 문자 \r 과 \n은 무엇일까? (2) | 2019.01.28 |
아나콘다(Anaconda) 및 주피터 노트북(jupyter notebook) 설치법 (0) | 2019.01.02 |