[Django] - SMTP 이용해 메일 보내기

오동훈·2022년 12월 22일
1

Django

목록 보기
15/24

1. SMTP

갑자기 코드로 메일을 대신 보내준다는게 너무 신기해 바로 찾아봐 적용해봤습니다. 그리고 해당 기능을 추후에는 Celery와 엮어서도 포스팅 할 예정입니다.

우선 SMTP란 Simple Mail Transfer Protocol의 약자로

  • 전자 메일 전송을 위한 표준 프로토콜
  • 이메일을 송수신하는 서버를 SMTP 서버라고 부릅니다.

2. 호딱 써보기

백문이 불여일견~ 일단 호딱 해보겠습니다.

1. Gmail

Gmail을 이용하기 위해 사용 법을 찾아보았는데 우선 보안 수준을 낮춰주어야합니다.

하지만... 일반 계정은 5월 달부터 다음처럼 사용 중지되었습니다..

workspace를 이용하면 가능한데 돈을 내야하니 패스하겠습니다

2. Naver

바로 네이버로 호딱 와버렸습니다. 설정 과정은 다음과 같습니다. 아래와 같이 설정을 진행해주면 벌써 준비 끝입니다.

네이버 > 환경 설정 > POP3/IMAP 설정 > IMAP/SMTP 설정 > 사용함으로 설정

3. Django

Django에서도 설정해주어야 하는 부분은 크게 2가지입니다.

  1. Settings File 설정
  2. code 구성

1. Settings

이메일을 보낼 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

2. Code 구성

코드 구성은 크게 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'),

이렇게만 구성하면 벌써 끝입니다.

4. 결과

서버를 실행시켜 해당 url을 실행해보면 에러가 나오게 됩니다.

하지만 괜찮습니다. 해당 url에 맵핑되어 있는 함수는 실행되었을 것이고 그 결과를 확인해보면 다음과 같습니다.

위의 에러난 페이지를 여러 번 새로고침하면 그만큼 메일이 도달할 것입니다.

완전 신기한 결과 끄으으읕~~

profile
삽질의 기록들🐥

0개의 댓글