갑자기 코드로 메일을 대신 보내준다는게 너무 신기해 바로 찾아봐 적용해봤습니다. 그리고 해당 기능을 추후에는 Celery와 엮어서도 포스팅 할 예정입니다.
우선 SMTP란 Simple Mail Transfer Protocol의 약자로
백문이 불여일견~ 일단 호딱 해보겠습니다.
Gmail을 이용하기 위해 사용 법을 찾아보았는데 우선 보안 수준을 낮춰주어야합니다.
하지만... 일반 계정은 5월 달부터 다음처럼 사용 중지되었습니다..
workspace를 이용하면 가능한데 돈을 내야하니 패스하겠습니다
바로 네이버로 호딱 와버렸습니다. 설정 과정은 다음과 같습니다. 아래와 같이 설정을 진행해주면 벌써 준비 끝입니다.
네이버 > 환경 설정 > POP3/IMAP 설정 > IMAP/SMTP 설정 > 사용함으로 설정
Django에서도 설정해주어야 하는 부분은 크게 2가지입니다.
- Settings File 설정
- code 구성
이메일을 보낼 Naver 계정을 아래에 적어주면 첫 번째 단계는 마무리됩니다.
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = 'user@naver.com (이메일을 보낼 Naver 계정)'
EMAIL_HOST_PASSWORD = '설정한 계정의 비밀번호'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
코드 구성은 크게 View 부분과 URL 라우팅이 전부입니다.
우선 view 부분에서는 Django에서 지원하고 있는 EmailMessage를 사용합니다.
# views.py
from django.core.mail import EmailMessage
def send_email(request):
subject = "message" # 타이틀
to = ["odh0112@naver.com"] # 수신할 이메일 주소
from_email = "odh0112@naver.com" # 발신할 이메일 주소
message = "메세지 테스트" # 본문 내용
EmailMessage(subject=subject, body=message, to=to, from_email=from_email).send()
# urls.py
path('send_email/', send_email, name='send_email'),
이렇게만 구성하면 벌써 끝입니다.
서버를 실행시켜 해당 url을 실행해보면 에러가 나오게 됩니다.
하지만 괜찮습니다. 해당 url에 맵핑되어 있는 함수는 실행되었을 것이고 그 결과를 확인해보면 다음과 같습니다.
위의 에러난 페이지를 여러 번 새로고침하면 그만큼 메일이 도달할 것입니다.
완전 신기한 결과 끄으으읕~~