본문 바로가기

Django

[Django] 구글로 이메일 보내기

 

오늘은 Django 프레임워크에서 이메일을 보내는 방법에 대해 알아보겠습니다!

 

구글 이메일을 통해 이메일을 보낼 예정이고, 받는 이메일은 다양한 플랫폼으로 가능합니다!

 

시작할게요 :)


 

▶ 발신할 이메일 설정(구글)

GMAIL_ID & GMAIL_PASSWORD 는 my_settings.py 에 입력한 내 아이디 비밀번호와 연결!

★ 중요! 개인정보 정보가 공유되지 않도록 my_settings.py 는 .ignore 파일에 추가하도록 한다!

 

[settings.py]

# 발신할 이메일
EMAIL_HOST_USER = GMAIL_ID

# 메일을 호스트하는 서버
EMAIL_HOST = "smtp.gmail.com"

# gmail과 통신하는 포트
EMAIL_PORT = 587

# TLS 보안 방법
EMAIL_USE_TLS = True

# 발신할 이메일의 비밀번호
EMAIL_HOST_PASSWORD = GMAIL_PASSWORD

# 사이트와 관련한 자동응답을 받을 이메일 주소
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

 

▶ 구글 이메일 계정의 권한 설정하기

설정한 gmail을 발신자로 메일을 보낼 때, 접근할 수 있도록 보안 설정 단계를 아래와 같이 낮춰주어야 한다!

구글 계정 → 보안 → 보안수준이 낮은 앱의 엑세스 "사용" 설정

 

▶ 이메일 보내기

[views.py]

class SendEmailView(View):
    def post(self, request):
        try:
            data = json.loads(request.body)
            email = data["email"]

            send_mail(
                "test mail",         # 제목
                "테스트 메일 입니다.",    # 내용
                "",                  # 보내는사람 메일/setting의 기본값으로 설정됨.
                [email],             # 받는 사람 메일
                fail_silently=False,
            )

            return JsonResponse({"message": "SUCCESS"}, status=200)
            
        except KeyError:
            return JsonResponse({"message": "KEY_ERROR"}, status=400)

 

 

▣ 참고자료

https://docs.djangoproject.com/en/3.2/topics/email/

 

'Django' 카테고리의 다른 글

[Django] 댓글, 대댓글, 페이지네이션 구현하기  (0) 2021.11.06
[Django] 유닛테스트  (0) 2021.09.16