Django 메일 보내기
Django(rest framework) 프로젝트에서 Google SMTP를 이용해 메일을 보내는 기능을 추가해보려고 합니다.
Google SMTP를 사용 한 메일 보내기
Google 계정 설정
환경에 따라 보안 수준이 낮은 앱에서 계정에 액세스하도록 허용을 해주어야 합니다.
설정
Google SMTP를 이용하기 위해 프로젝트의 settings.py
에 설정을 추가 합니다.
1
2
3
4
5
6
7
8
9
10
# settings.py
...
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '' # ex) bum752@gmail.com
EMAIL_HOST_PASSWORD = '' # ex) P@ssw0rd
SERVER_EMAIL = '' # ex) bum752@gmail.com
DEFAULT_FROM_MAIL = '' # ex) bum752
쉘을 이용한 테스트
프로젝트에 추가하기 전에 쉘을 이용해 테스트 해볼 수 있습니다.
쉘에서 1이 출력되었고 정상적으로 메일이 발송되었습니다.
메일 발송
간단한 예로 POST /send
에 email
을 바디에 추가하면 해당 메일로 발송해 보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# views.py
from django.core.mail import EmailMessage
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
class MailView(APIView):
def post(self, request, format=None):
email = request.data['email']
if email is not None:
subject = 'Django를 통해 발송된 메일입니다.'
message = 'Google SMTP에서 발송되었습니다.'
mail = EmailMessage(subject, message, to=[email])
mail.send()
return Response(status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_400_BAD_REQUEST)
1
2
3
4
5
6
7
8
9
10
# urls.py
from django.conf.urls import url, include
from rest_framework.urlpatterns import format_suffix_patterns
from app import views
urlpatterns = [
url(r'^send$', views.MailView.as_view()),
]
urlpatterns = format_suffix_patterns(urlpatterns)
메일 본문에 템플릿을 이용하고 싶다면 Templates을 활용할 수 있습니다.
댓글남기기