코딩공부/Python Django

django SMTP gmail 설정 및 테스트

integerJI 2020. 8. 20. 22:43

해당 글은 아래의 사이트를 보며 학습하였으며 추가적인 보안 및 자세한 설명을 추가하였습니다. 

 

https://yuda.dev/207

 

Django에서 지메일 보내기

"지메일을 사용한다는 가정 하에" settings.py EMAIL_HOST = "smtp.gmail.com" EMAIL_PORT = 587 EMAIL_HOST_USER = "myaccount@gmail.com" EMAIL_HOST_PASSWORD = "mypassword" EMAIL_USE_TLS = True 그리고 실행..

yuda.dev

 

settings.py 설정해 주기

# Email 전송
# 메일을 호스트하는 서버
EMAIL_HOST = 'smtp.gmail.com'

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

# 발신할 이메일
# EMAIL_HOST_USER = '구글아이디@gmail.com'
EMAIL_HOST_USER = get_secret("EMAIL_HOST_USER")

# 발신할 메일의 비밀번호
# EMAIL_HOST_PASSWORD = '구글비밀번호'
EMAIL_HOST_PASSWORD = get_secret("EMAIL_HOST_PASSWORD")

# TLS 보안 방법
EMAIL_USE_TLS = True

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

 

먼저 settings.py에 Email 전송을 학 위한 설정을 해줍니다.

 

github에 올리면 안 되는 정보인 EMAIL_HOST_USER와 EMAIL_HOST_PASSWORD는 secrets.json에서 받아 줍니다.

 

참고 : https://integer-ji.tistory.com/180

 

django secret key 분리, secrets.json 생성

git으로 프로젝트를 진행한다면 ( 2 ) - django secret key 분리하기 보고 배운 곳 : https://inma.tistory.com/83 .gitignore 설정하기 : https://integer-ji.tistory.com/179 해당 글을 보았다면 모두..

integer-ji.tistory.com

 

user/views.py

from django.core.mail.message import EmailMessage

def send_email(request):
    subject = "message"
    to = ["id@gmail.com"]
    from_email = "id@gmail.com"
    message = "메지시 테스트"
    EmailMessage(subject=subject, body=message, to=to, from_email=from_email).send()

 

일단 메시지가 잘 전송이 되는지 테스트를 해야 합니다.

 

메시지 전송 함수를 만들어 줍니다.

 

 

gmail 계정 설정

 

https://accounts.google.com/DisplayUnlockCaptcha

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

해당 사이트에서

 

내 google 계정에 대한 액세스를 허용해 줍니다.

 

 

다음으로는 구글 계정 설정에서 "보안 수준이 낮은 앱의 액세스"를 허용해줍니다.

 

 

 

gmail 설정

 

IMAP를 사용 체크해줍니다.

 

 

send_email 함수 실행

path('send_email/', views.send_email, name='send_email'),

user/urls.py에 함수를 실행하는 url을 설정해 줍니다.

 

서버를 실행시켜 해당 함수를 호출하면

 

 

해당 오류가 나오지만 괜찮습니다. 

 

이미 저희가 원하는 함수는 실행이 되었으니까요

 

 

잘 작동되네요

 

실제 사용하고 있는 구글 계정이라면 허용한 액세스를 꼭 다시 차단해주시고

 

저는 새로운 계정을 만들어서 새로운 계정으로 테스트를 진행하였습니다.