Email 전송 기능 구현 방법 - Tirrilee/TechTalk GitHub Wiki
정리
- Django에 내장 라이브러리가 있어 별다른 설정 없이도 쉽게 SMTP서버를 구축하고 사용할 수 있다. [참고]
- 코딩을 하기 전에 전송하려는 메일계정에 IMAP 설정을 변경해줘야 한다 ->
IMAP 설정 허용
settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Django 내장 라이브러리를 Import 한다.
EMAIL_HOST = 'smtp.gmail.com'
# 메일을 호스트하는 서버이고 gmail을 사용할 것 이다.
EMAIL_PORT = '587'
# gmail에서 권장하는 이메일 통신 포트이다.
EMAIL_HOST_USER = '[email protected]'
# 발신할 이메일 입력한다.
EMAIL_HOST_PASSWORD = '********'
# 발신할 이메일 비밀번호를 입력한다.
EMAIL_USE_TLS = True
# TLS 사용 여부에 대한 설정이고 TLS는 보안 방법 중 하나이다.
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
# 사이트와 관련한 자동응답을 받을 이메일 주소로 기본값은 'webmaster@localhost'라고 한다.
views.py
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
def send_email(request):
subject = request.POST.get('subject', '') # Template에서 입력받은 제목
message = request.POST.get('message', '') # Template에서 입력받은 내용
from_email = request.POST.get('from_email', '') # Template에서 입력받은 이메일
if subject and message and from_email:
try:
send_mail(subject, message, from_email, ['[email protected]'])
except BadHeaderError:
return HttpResponse('헤더 설정이 잘못 되었습니다.')
return HttpResponseRedirect('/contact/thanks/') # 메일 보내기에 성공했을시, 연결되는 링크
else:
# 실제로는 Form Class를 사용하고, 알아서 적절한 오류 메세지를 출력합니다.
return HttpResponse('빈칸을 알맞게 채웠는지 확인하세요.')