django에는 기본적으로 email 발송 기능이 내장되어 있다. 그런데, 인터넷에 관련 예제를 찾아 보면 전부 gmail 발송이고, daum 메일(hanmail.net / daum.net) 발송에 대한 예제는 거의 없어서 정리하게 되었다.
이미 gmail로 발송을 해 봤다면 기본적인 맥락은 거의 유사하다.
1. Daum 메일 설정
daum 메일 -> 환경설정에 들어가자.

웹서버를 통한 메일 발송은 SMTP라는 프로토콜을 사용하게 되는데, 그러려면 다음과 같이 사용 설정을 해야 한다. 기본값으로 '사용 안 함'으로 되어있으니, 꼭 잊지 말고 바꿔야 한다.
2. django의 settings.py 변경
EMAIL_HOST = 'smtp.daum.net' # 메일 호스트 서버
EMAIL_PORT = 465 # 서버 포트
EMAIL_HOST_USER = '사용할 이메일'
EMAIL_HOST_PASSWORD = '이메일 비밀번호'
EMAIL_USE_SSL = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # 기본 발신자
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

SMTP 설정 페이지 바로 밑에 나온 안내문이다. 이대로 설정하되, 이미 gmail로 구현해 본 적이 있다면 다른 점이 몇개 있다.
- Port : gmail은 587 포트를 사용하는데 여기서는 465 포트를 사용해야 한다.
- EMAIL_USE_SSL : 내가 이 글을 쓰게 된 이유이다. 처음에 gmail을 쓰다가 다음 메일로 교체했는데, 어떤 오류도 없이 그냥 이메일 발송 페이지에서 웹서버가 멈춰 버리는 일이 있었다. 값을 쭉 점검해본 결과, 이 설정값에 문제가 있었다. 이전엔 EMAIL_USE_TLS = True 를 설정값으로 이용했다. TLS와 SSL은 유사하지만 엄연히 다른 프로토콜이었고, 이 값을 EMAIL_USE_SSL로 바꾸니까 정상적으로 작동되었다. 참고로, EMAIL_USE_SSL 과 EMAIL_USE_TLS를 동시에 넣으면 하나만 쓰라고 에러가 난다. 이 부분 반드시 체크하자.
발송 과정은 django.core.mail을 활용하면 되고 워낙 예제가 많아서 생략한다.
'프로그래밍 > Django' 카테고리의 다른 글
Django에서 아임포트를 통해 결제 구현하기 - (1) 아임포트 세팅 및 결제 구조 (2) | 2021.05.14 |
---|---|
Django 서버에서 Sentry로 모니터링하고 에러 해결하기 (0) | 2021.05.13 |
Django에서 ajax POST로 데이터 받기 (0) | 2020.09.09 |
Django 기본 로그인 form 수정해서 한글화하여 쓰기 (0) | 2020.08.06 |