밤하늘공작소

Django에서 이메일 보내기 본문

코딩/Django

Django에서 이메일 보내기

밤하늘공작소 2022. 8. 25. 13:52

여러분이 어떤 메일 사이트에 들어가서 이메일을 작성하고 전송을 하면, 그 사이트의 이메일 서버(1)를 통해서 전송되는 대상의 사이트 이메일 서버(2)에 전송해 그 사용자에게 전달이 됩니다. 여기서 이메일을 전송하는 1번 이메일 서버를 SMTP(Simple Mail Transfer Protocol) 서버라고 합니다. Django에서 SMTP 서버에 요청을 보내서 이메일을 보낼 수 있습니다. 

 


 

사람들이 가장 많이 사용하는 구글의 G-mail로 이메일을 보겠습니다. 우선 이메일을 보낼 구글 계정(G-mail 계정)을 준비하시고, 이것을 따라해주시면 됩니다. 

 

1. 구글 계정의 2단계 인증 사용

구글의 G-mail을 Django에서 사용하려면 2단계 인증을 해야합니다. 만약 이것이 불편하시면, 부계정을 만들어서 테스트하셔도 됩니다. 

 

우선 구글 계정에 로그인한 상태에서 http://myaccount.google.com/security 에 들어갑니다. (부계정이라면 이 화면에서 오른쪽 위에 있는 이미지로 계정 전환) 그 후 밑으로 내려가 2단계 인증을 클릭합니다. 이제 비밀번호 밑 전화번호 인증으로 2단계 인증을 활성화시킵니다. 

 

2. 구글 앱 비밀 번호 설정

2단계 인증을 활성화했다면 그 밑에 앱 비밀번호가 보일 것입니다. 그것을 눌른 후 비밀번호를 입력해줍니다. 그러면 앱 비밀번호 창이 나옵니다. 그곳에서 앱 선택을 기타로 설정해줍니다. 그러면 앱의 이름을 설정하라고 나오는데 그곳에 원하는 이름을 적어주시면 됩니다. (크게 상관이 있지는 않습니다.) 그러면 밑의 사진 같은 창이 나옵니다. 이곳의 비밀번호는 한 번 밖에 보여주지 않습니다. (그렇기 때문에 메모장 같은 곳에 저장해놓는 것을 추천드립니다.)

3. Django 설정

이메일을 보낼 구글 계정의 앱 비밀번호를 만들었다면, 이제 Django의 settings.py에 들어간 후 밑에 이러한 코드를 추가해주면 됩니다. 

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_HOST_USER = '이메일을 보낼 G-mail 계정'
EMAIL_HOST_PASSWORD = '설정한 앱 비밀번호'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

이 설정을 하고 나면 이제 Django에서 이메일을 보낼 수 있습니다. 

 

4. 이메일 보내기

이메일을 보내는 형식은 몇 가지의 방법이 있지만, 저는 이러한 방법을 사용합니다. 

from django.core.mail import EmailMessage

email = EmailMessage(
    'Title', #이메일 제목
    'Content', #내용
    to=['example@example.com'], #받는 이메일
)
email.send()

 

이메일 활용: to는 리스트로 정의 되기 때문에 한 번에 여러 명에게 이메일을 보낼 수 있습니다. email.send()는 성공하면 1을 실패하면 0을 리턴하기 때문에 email.send()를 변수 안에 넣어서 그 변수를 이용해 성공했는지를 확인하는 방법이 있다. 

반응형
Comments