본문 바로가기
Dev Log/Django

[Django] Gmail SMTP 보내기

by 삽질하는큐 2017. 4. 19.

이메일로 회원가입을 하거나 할 때, 해당 메일이 실제로 쓰이고 있고 해당 유저가 사용하고 있는지를 인증하기 위해서 인증 메일을 보내곤 한다. 이를 SendGrid나 AWS SES 등의 서비스를 통해서 할 수도 있지만, G-mail을 통해서 작은 규모의 웹사이트에서도 사용할 수 있다.


먼저, SMTP를 사용하기 위해서 지메일에서는 두 가지를 설정해줘야 한다.

1. IMAP 사용함 설정 https://support.google.com/mail/answer/7126229?hl=ko&rd=3&visit_id=1-636281811566888160-3239280507#ts=1665018

2. 보안 수준이 낮은 앱 허용 https://support.google.com/accounts/answer/6010255

두 가지 설정이 마치게 되면 SMTP를 이용할 수 있게 된다. 다만 해당 계정의 비밀번호가 유출되지 않도록 잘 관리하자. Django에서는 SMTP 설정이 몇 줄만으로 끝이난다.



settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = 'username@gmail.com'
EMAIL_HOST_PASSWORD = 'your-gmail-password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

(587 port는 지메일 권장사항이기 때문에 587을 쓰는 것이고, 해당 포트를 열어놓도록 한다.)


이렇게 설정을 해 놓은 상태가 되면 python shell에서 테스트를 해볼 수 있다.


>>> from django.core.mail import EmailMessage

>>> email = EmailMessage('subject text', 'body text', to=['somebody@example.com'])

>>> email.send()

1

1이 나오면 잘 전송이 된 것이다. 해당 메일이 왔는지 somebody@example.com에서 확인해보자.