장고 - 이메일 서버 셋팅

  • 웹 서비스를 이용하면 회원 가입 시 메일을 보내는 등의 일을 해야할 때가 있다.
  • 장고에서는 메일 서버를 셋팅하기만 하면 쉽게 메일을 보낼 수 있다.
  • 이번에는 아래와 같은 순서로 gmail을 이용하여 메일을 보내보겠다.

1. gmail 설정 변경

  • 외부에서 메일 보내기 서버를 사용하려면 gmail 설정에서 IMAP 사용으로 변경 필요
  • gmail 로그인하여 화면 우측 상단 설정 버튼 클릭
  • [전달 및 POP/IMAP] 탭으로 이동해 IMAP 사용에 체크
  • 화면 하단의 [변경사항 저장] 버튼 클릭
  • 보안 수준이 낮은 앱의 액세스 허용을 위해 계정 -> Google 계정을 클릭해 계정 설정으로 이동
  • 계정 설정 화면에서 [보안] 탭 클릭 > [보안 수준이 낮은 앱의 액세스] 부분을 찾아 [액세스 사용 설정] 버튼 클릭

2. django 프로젝트의 settings.py에 메일서버 설정

1
2
3
4
5
6
7
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = '이메일 계정'
EMAIL_HOST_PASSWORD = '계정 비밀번호'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

3. 쉘을 이용한 메일 전송 테스트

  • 쉘 접속
    $ python manage.py shell

    • 일반 메일 전송

      1
      2
      3
      from django.core.mail import EmailMessage
      email = EmailMessage('제목', '본문', to=['받는 사람 이메일주소'])
      email.send()
    • HTML 포함된 메일 전송

      1
      2
      3
      4
      from django.core.mail import EmailMultiAlternatives
      email = EmailMultiAlternatives('제목', '본문', to=['받는사람 이메일주소'])
      email.attach_alternative("html이 포함된 본문", "text/html")
      email.send()
    • send 메시지 실행했을 때, 1이 출력되면 메일 전송 성공 -> 받는 메일함에서 확인