Django mail 보내기
개인이나 기업이 SMTP서버를 설치해서 이를 통해 메일을 발송할 수 있습니다.
하지만 요즘은 구글, 마이크로소프트 등의 기업에서 SMTP 서버를 오픈하기 때문에 이를 통해서 메일을 전송할 수 있습니다. 오늘은 GMail의 SMTP 서버를 이용해서 메일을 전송해보겠습니다.
GMail SMTP서버
Gmail의 SMTP서버를 사용하기 위해 설정을 해야합니다.
- 다른 이메일 크라이언트에서 GMail을 확인할 수 있도록 IMAP 사용 설정
- 보안 수준이 낮은 앱 및 Google 계정 허용(이 설정을 하지 않으면 계정이 틀렸다고 나옵니다.)
두가지 설정을 마치게 되면 SMTP 서버를 이용할 수 있습니다.(주의: 해당 계정의 비밀번호가 유출되지 않도록 잘 관리해주셔야 합니다.)
Django 설정
1 | settings.py |
2 | |
3 | EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' |
4 | EMAIL_HOST = "smtp.gmail.com" |
5 | EMAIL_HOST_USER = 'user-ID@gmail.com' |
6 | EMAIL_HOST_PASSWORD = 'user-PW' |
7 | EMAIL_PORT = 587 |
8 | EMAIL_USE_TLS = True |
9 | DEFAULT_FROM_EMAIL = EMAIL_HOST_USER |
- EMAIL_BACKEND: 메일을 전송에 쓰는 백엔드 설정
- EMAIL_PORT: 587포트는 Gmail의 권장 사항
- EMAIL_USE_TLS: TLS(Transport Layer Sercurity)는 통신 내용을 암호화하는 통신 규약이다.
Django 메일 송신
django에서는 pythond의 내장 모듈인 stmplib를 통해 메일을 방송합니다.
Basic 메일 전송
1 | from django.core.mail import send_mail |
2 | |
3 | send_mail( |
4 | 'Subject here', # 제목 |
5 | 'Here is the message.', # 내용 |
6 | 'from@example.com', # 보내는 이메일 (settings에 설정했다면 작성하지 않아도 됩니다.) |
7 | ['to@example.com'], # 받는 이메일 리스트 |
8 | fail_silently=False, # send_mail에서 오류가 발생하면 smtplib.SMTPException을 발생시킵니다. |
9 | ) |
EmailMessage 클래스
1 | from django.core.mail import EmailMessage |
2 | |
3 | email = EmailMessage( |
4 | 'Hello', # 메일 제목 |
5 | 'Body goes here', # 내용 |
6 | 'from@example.com', # 보내는 이메일 (settings에 설정했다면 작성하지 않아도 됩니다.) |
7 | to=['to1@example.com', 'to2@example.com'], # 받는 이메일 리스트 |
8 | ) |