티스토리 뷰
프로젝트 진행 과정에서 메일링 서비스를 구현해야 해서, 우선 첫 번째 단계로 이메일 인증 단계를 구현해야 했다.
그 중에서도 처음 단계로 우선 장고를 통해서 메일을 보내는 것을 구현해보기로 했다.
https://wave1994.tistory.com/100
파이썬(Django) :: 회원가입 시 이메일 인증 API
이번 포스팅은 장고(Django)로 회원가입 시 인증 이메일을 보내는 API Code를 정리 해보려고한다. 회원가입 API 기반으로 작성하기 때문에 회원가입/로그인에 관한 자세한 내용은 아래 링크를 참고
wave1994.tistory.com
https://woongsin94.tistory.com/300
Django 회원가입 이메일 인증(SMTP)
많은 포털 사이트에서 회원가입 시 웹 메일 인증 시스템을 채택하고 있다. (현재는 대부분 보안성 때문에 기기 인증 등도 활용되고 있다고 한다...) 프로젝트를 진행하면서 해당 부분이 필요하게
woongsin94.tistory.com
링크를 여러개 찾아보니, 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이 뜨면 정상적으로 메일이 잘 간 것이다.
'TIL - 2022' 카테고리의 다른 글
[TIL 017] 스프링부트 - 회원 서비스 개발과 테스트 (0) | 2022.03.27 |
---|---|
[TIL 016] 2022032 (0) | 2022.03.26 |
[TIL 014] 20220323 (0) | 2022.03.24 |
[TIL 013] 20220320 (0) | 2022.03.21 |
[TIL 012] 스프링부트 - 회원 레포지토리 생성 및 테스트케이스 작성 (0) | 2022.03.21 |