파이썬으로 이메일 보내기(SMTP)
안녕하세요 열코입니다.
이번에는 파이썬을 활용하여 지메일(Gmail)로 메일 보내기에 대해 알아보겠습니다.
파이썬에서 메일을 보내기 위해서는 외부 라이브러리가 별도로 필요하지 않으며,
'SMTP lib' 이라는 기본 라이브러리를 제공합니다.
SMTP(Simple Mail Transfer Protocol)이란 인터넷 상의 유효한 이메일 아이디로
이메일을 보내는 데 사용되는 클라이언트입니다.
또한 지메일 외에 다른 메일 서비스도 제공하는데, 이번시간에는 지메일에 대해서만 다루겠습니다.
지메일 계정에서 메일을 보내는 단계는 매우 간단하며,
아래에 소개한 순서대로만 따라오시면 누구나 쉽게 프로그램을 통해 메일을 보낼 수 있을거에요.
(전체 코드는 페이지 맨 아래에 첨부하였습니다.)
자 그럼 시작하겠습니다.
1. 먼저 smtp를 사용하기위해 모듈을 추가해야겠죠?
아래 코드와 같이 추가합니다.
import smtplib
from email.mime.text import MIMEText
smtplib은 SMTP를 사용하기 위한 모듈이고, MIMEText는 메일을 보낼 때 메시지의 제목과 본문을
설정하기 위한 모듈이라고 보시면 되겠습니다.
2. 다음 SMTP 세션을 아래 코드와 같이 설정합니다.
# 세션 생성
s = smtplib.SMTP('smtp.gmail.com', 587)
세션을 만들기 위해 SMTP 인스턴스를 이용하여 SMTP 연결을 캡슐화합니다.
첫번째 매개변수는 지메일을 사용하기 위한 SMTP 변수이며,
두번째 매개변수는 포트번호를 입력합니다. 지메일의 경우 포트번호 587을 사용합니다.
3. 다음 순서로 지메일은 보안상의 이유로 SMTP연결을 TLS(전송 계층 보안) 모드로 설정해야 합니다.
지메일 TLS 보안은 아래 코드와 같이 설정합니다.
# TLS 보안 시작
s.starttls()
4. 그다음 지메일 계정 로그인을 아래 코드와 같이 인증합니다.
# 로그인 인증
s.login('지메일 계정', '앱 비밀번호')
지메일 SMTP의 로그인을 인증하기 위해서는 지메일 계정과 앱 비밀번호가 필요합니다.
지메일 계정은 모두 갖고 계시겠죠? xxxxx@gmail.com < 이런 형식을 입력하시면 됩니다.
그렇다면 앱 비밀번호는 무엇일까요?
단순히 계정 비밀번호를 입력해서는 안됩니다!
또한 지메일 계정을 다른 디바이스에서 사용하기 위해서는 IMAP을 설정해주어야 하는데,
앱 비밀번호 생성 및 IMAP 설정 방법은 아래와 같습니다.
☞ IMAP 설정하는 방법
1. 지메일 계정에 로그인합니다.
2. 우측 상단에 아래 사진과 같이 톱니바퀴 모양의 아이콘을 눌러 설정에 들어갑니다.
3. 상단의 카테고리중 '전달 및 POP/IMAP' 카테고리를 선택하고 IMAP 액세스에서
IMAP 사용을 눌러줍니다.
4. 변경사항 저장을 꼭 눌러줍시다.
※ IMAP을 설정하지 않을 경우 아래와 같은 보안 메일을 받게됩니다.
☞ 앱 비밀번호 생성하는 방법
1. 여기에 접속합니다. 접속하시면 아래와 같은 사진이 나옵니다.
앱 비밀번호를 얻기 위해서는 2단계 인증을 완료해야합니다.
2단계 인증을 누르고 사이트에서 시키는 대로 해줍시다...(휴대폰 인증 해줍니다)
2단계 인증이 끝나고 나면 앱 비밀번호를 생성할 수 있는 화면이 위 사진과 같이 나타나게됩니다.
2. 앱 비밀번호 생성하기
본인이 사용하는 프로그램에 대한 앱과 기기를 선택해줍니다.
본 포스트는 파이썬을 활용한 메일보내기 프로그램이기 때문에
앱은 메일을 선택하고, 기기는 Windows 컴퓨터를 선택해줍니다.
그러면 생성버튼이 활성화 되는데, 생성버튼을 눌러주도록 합니다.
3. 아래 노란색 박스에 앱 비밀번호(16자리)가 생성되면 해당 비밀번호를 복사해서
위 코드에서 로그인 인증부분의 앱 비밀번호에 복사해줍니다.
이로써 IMAP 설정 및 앱 비밀번호 생성이 완료되었습니다.
다시 코드로 돌아갑시다~
5. 메시지 작성
이메일을 보내기 위해서는 메일의 제목과 본문 내용이 필요하겠죠?
아래 코드와 같이 작성하시면 됩니다.
# 보낼 메시지 설정
msg = MIMEText('내용 : 본문내용 테스트입니다.')
msg['Subject'] = '제목 : 메일 보내기 테스트입니다.'
6. 메일을 보내고 세션을 종료합니다.
# 메일 보내기
s.sendmail("보내는 이메일", "받는 이메일", msg.as_string())
# 세션 종료
s.quit()
보내는 이메일에 본인의 지메일 계정을 입력하고, 받는 이메일에 받는 사람의 이메일 계정을 적습니다.
저는 받는 이메일에 제 네이버 메일을 작성했습니다.
자 이로써 모든 코드를 작성했고, 실행버튼을 눌러 실행해봅시다.
로그나 표준입출력을 설정하지 않았기 때문에 따로 오류 코드가 뜨지않는다면
성공적으로 프로그램이 실행된 것입니다.
이제 받는 이메일로 설정된 네이버 이메일로 가보겠습니다.
위 사진과 같이 아주 잘 보내지고 받아지는것을 확인 할 수 있습니다.
아래에 프로그램 전체 코드를 첨부합니다.
import smtplib
from email.mime.text import MIMEText
# 세션 생성
s = smtplib.SMTP('smtp.gmail.com', 587)
# TLS 보안 시작
s.starttls()
# 로그인 인증
s.login('지메일 계정', '앱 비밀번호')
# 보낼 메시지 설정
msg = MIMEText('내용 : 본문내용 테스트입니다.')
msg['Subject'] = '제목 : 메일 보내기 테스트입니다.'
# 메일 보내기
s.sendmail("보내는 이메일", "받는 이메일", msg.as_string())
# 세션 종료
s.quit()
받는 이메일을 wjhv115@naver.com로 설정해서 열코에게 이메일을 보내보세요. ^^
추첨을 통해 티스토리 초대장을 드립니당!
[관련 게시글]
2018/09/19 - [Language/Python] - 파이썬 간단하게 코딩하기
2018/09/18 - [Language/Python] - 파이썬 집합(Set) 자료형 사용법
2018/09/16 - [Language/Python] - 파이썬 튜플(Tuple) 사용법
2018/09/15 - [Language/Python] - 파이썬 리스트 사용법2 - 활용
2018/09/14 - [Language/Python] - 파이썬 리스트 사용법
2018/08/18 - [Language/Python] - 파이썬 DB연동 - PyMySQL + MySQL
이상 '파이썬 메일보내기'에 대해 알아보았습니다.
질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!
공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.
'Python' 카테고리의 다른 글
파이썬 파일 입출력 (0) | 2018.10.06 |
---|---|
파이썬 난수(random) 생성 (0) | 2018.09.24 |
파이썬 간단하게 코딩하기 (2) | 2018.09.19 |
파이썬 집합(Set) 자료형 사용법 (0) | 2018.09.18 |
파이썬 튜플(Tuple) 사용법 (0) | 2018.09.16 |
파이썬 리스트 사용법2 - 활용 (0) | 2018.09.15 |
파이썬 리스트 사용법 (0) | 2018.09.14 |
파이썬 DB연동 - PyMySQL + MySQL (1) | 2018.08.18 |