티스토리 뷰

TIL - 2022

[TIL 015] 장고로 이메일 보내기

바랄 희 2022. 3. 25. 22:25

프로젝트 진행 과정에서 메일링 서비스를 구현해야 해서, 우선 첫 번째 단계로 이메일 인증 단계를 구현해야 했다.

그 중에서도 처음 단계로 우선 장고를 통해서 메일을 보내는 것을 구현해보기로 했다.

링크를 여러개 찾아보니, SMTP로 보낸다는 점은 모두 동일했고, 일부 글에서는 settings.py 를 분리하는 경우도 보였다. 이메일 보안 때문이었다. (깃헙에 호스트 이메일과 비밀번호가 유포되면 안되므로)

그러나, settings.py 는 주로 배포하는 과정에서 분리하는 것으로 알고 있고, 이미 배포가 된 사이트를 유지보수하는 과정이었으므로 굳이 그렇게 해야 할까..? 하는 생각도 들었다. 그래서 알아봤더니, env 를 활용하면 되는 것이었다!

.env

 

#Email validate
EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='이메일주소'
EMAIL_HOST_PASSWORD='비밀번호'
SERVER_EMAIL='이메일 주소'
DEFAULT_FROM_MAIL='이메일 아이디'

 

이 과정에서 계속 에러가 났는데, 그 이유는 습관적으로 변수명과 값 사이에 띄어쓰기를 하기 때문이었다. 그렇게 되면 계속해서 invalid line 이라고 뜨면서 에러가 났다. 

이를 수정해 주었더니 잘 돌아갔다. 

 

settings.py

 

import environ
env = environ.Env()
env.read_env(f"{BASE_DIR}/.env")

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST = env('EMAIL_HOST')
EMAIL_HOST_USER = env('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD")
SERVER_EMAIL = env("SERVER_EMAIL")
DEFAULT_FROM_MAIL = env("DEFAULT_FROM_MAIL")

 

settings.py 에는 이렇게 작성하여 settings.py 를 접근할 수 있는 사람들이 이메일 주소와 비밀번호는 알지 못하도록 막았다.

 

이후에 이메일 기능만 잘 구현되는지 알아보기 위해서 터미널에

 

$ python manage.py shell
>>> from django.core.mail import EmailMessage
>>> email = EmailMessage('title', 'content', to=['id@gmail.com'])
>>> email.send()

 

와 같이 작성해서 확인해볼 수 있다. 이 과정에서 1이 뜨면 정상적으로 메일이 잘 간 것이다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함