안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
오늘은 지난 시간에 이어서 파이썬 코드를 이용해서 Gmail에 메일을 보내는 방법에 대해서 공부해보겠습니다.
만약 구글에서 '2단계 인증'과 '앱 비밀번호' 설정을 함께 진행하지 않으셨다면 지난 글을 보시고 설정을 마치신 후에 이번 강의를 따라와 주세요!
2022.03.17 - [파이썬 패키지/이메일] - [python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기
1. smtplib 모듈 불러오기
가장 먼저 해줄 일은 smtplib 모듈을 import 해주는 것입니다. 지난 시간에 말씀드렸 듯이 smtplib 모듈은 파이썬 내장 라이브러리에 포함된 모듈로 별도의 설치가 필요 없답니다.
import smtplib
2. smtp 객체 생성
다음으로는 사용할 메일의 smtp 서버의 url과 포트(port) 정보를 입력하고 변수에 담아줍니다. 저는 gmail을 사용하기 위해서 위의 코드를 이용했습니다.
# smtplib.SMTP('사용할 SMTP 서버의 URL', PORT)
smtp = smtplib.SMTP('smtp.gmail.com', 587)
# TLS 암호화 (TLS 사용할 때에만 해당코드 입력)
smtp.starttls()
만약 네이버, 다음, 아웃룩 메일 등을 이용하시려면 아래의 smtp 정보를 참고하셔서 괄호 안의 정보만 바꿔주시면 됩니다.
# SMTP 서버 정보
smtp_info = {
'gmail.com': ('smtp.gmail.com', 587),
'naver.com': ('smtp.naver.com', 587),
'outlook.com': ('smtp-mail.outlook.com', 587),
'hotmail.com': ('smtp-mail.outlook.com', 587),
'yahoo.com': ('smtp.mail.yahoo.com', 587),
}
참고로 SMTP 서버의 암호화 방식에 따라 TLS(Transport Layer Security) 혹은 SSL(Secure Socket Layers)을 사용합니다.
TLS는 포트 587을, SSL은 465를 사용하는데 SSL 방식을 사용하기 위해서는 위와는 조금 다른 코드를 사용해야하니 주의해주세요.
smtp = smtplib.SMTP_SSL('smtp.daum.net',465)
# SMTP 서버 정보
smtp_info = {
'daum.net': ('smtp.daum.net', 465),
'hanmail.net': ('smtp.daum.net', 465),
'nate.com': ('smtp.mail.nate.com', 465),
}
3. smtp에 메일주소와 비밀번호 입력
이제 메일 정보를 입력해줍시다. 여기서 지난 시간에 발급받은 "앱 비밀번호"가 필요해요.
# smtp.login('메일 주소', '비밀번호')
smtp.login('xxxxx@gmail.com', '지난 시간 받았던 16자리 앱 비밀번호')
4. email 모듈의 MIMEText 클래스로 메일 내용 입력
간단한 메일을 보내는 경우에는 email 모듈의 MIMEText 클래스를, 좀 더 복잡한 메일은 MIMEMultipart 클래스를 사용합니다.
이번 시간에는 메일을 보내는 것이 목표이므로 MIMEText 클래스를 이용해서 메세지를 보내보겠습니다.
# email 모듈의 MIMEText 클래스 import
from email.mime.text import MIMEText
# 메일 내용 입력
msg = MIMEText('본문')
# 메일 제목 입력
msg['Subject'] = '제목'
5. 메일 보내기
마지막으로 해줄 일은 발신 메일과 수신 메일 주소를 입력해주는 일입니다.
smtp.sendmail('발신 할 메일 주소', '수신 받을 메일 주소', msg.as_string())
코드를 실행하였더니 아래와 같이 정상적으로 메일이 온 것을 확인할 수 있었습니다.
6. smtp 종료
메일을 더 보낼 일이 없다면, 잘 사용했던 smtp 객체를 종료하여 SMTP 서버와의 연결을 끊어줍니다.
smtp.quit()
<참고 자료>
1. SSL과 TLS의 차이
http://www.ktword.co.kr/test/view/view.php?m_temp1=1957
2. 예제로 배우는 파이썬 프로그래밍_메일 보내기(SMTP)
http://pythonstudy.xyz/python/article/508-%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0-SMTP
'파이썬 패키지 > 이메일' 카테고리의 다른 글
[python/smtplib/email] 파이썬으로 여러명에게 첨부파일 포함된 메일 보내기(ft. 이론상 구글, 네이버, 아웃룩 모두 가능) (0) | 2022.06.16 |
---|---|
[#shorts] 파이썬으로 네이버 메일 보내기 위한 초간단 설정 (0) | 2022.06.15 |
[python/imaplib] 파이썬으로 구글 Gmail 읽기 (0) | 2022.06.01 |
[python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기 (1) | 2022.03.17 |