장고:이메일app 만들기: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
편집 요약 없음 |
편집 요약 없음 |
||
(같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
3번째 줄: | 3번째 줄: | ||
==개요== | ==개요== | ||
장고에서 사용자에게 이메일을 보낼 일이 있다. 이러한 기능들을 한번에 관리하기 위한 앱. | 장고에서 사용자에게 이메일을 보낼 일이 있다. 이러한 기능들을 한번에 관리하기 위한 앱. | ||
=== 제공자에 따른 서버명, 포트 === | |||
{| class="wikitable" | |||
!'''메일 Provider''' | |||
!'''SMTP 서버명''' | |||
!'''포트''' | |||
!사전준비 | |||
|- | |||
|Gmail | |||
|smtp.gmail.com | |||
|587 | |||
|구글에서 앱 비밀번호까지 얻자. [https://coding-kindergarten.tistory.com/204 링크] | |||
|- | |||
|Naver | |||
|smtp.naver.com | |||
|587 | |||
| | |||
|- | |||
|Live | |||
|smtp.live.com | |||
|587 | |||
| | |||
|- | |||
|Daum | |||
|smtp.daum.net | |||
|465 | |||
| | |||
|- | |||
|nate.com | |||
|smtp.mail.nate.com | |||
|465 | |||
| | |||
|- | |||
|outlook.com | |||
|smtp.outlook.com | |||
|587 | |||
| | |||
|} | |||
=과정= | =과정= | ||
22번째 줄: | 60번째 줄: | ||
path('send/', views.sendEmail, name='send')] | path('send/', views.sendEmail, name='send')] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===settings.py 수정=== | |||
이메일을 보내기 위한 smtp 서버를 설정해주어야 한다. 없는 내용이니 다음과 같이, 이용하려는 서비스에 따라 추가해 준다. | |||
각 서비스에 따른 설정은 위의 제공자에 따른 서버명, 포트를 참고하자.<syntaxhighlight lang="python"> | |||
# Email settings | |||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' | |||
EMAIL_HOST = 'smtp.gmail.com' | |||
EMAIL_USE_TLS = True | |||
EMAIL_PORT = 465 # 장고 한그릇 뚝딱에선 587이라 기입되어 있다. | |||
EMAIL_HOST_USER = '각자 이메일' | |||
EMAIL_HOST_PASSWORD = '각자 암호' | |||
</syntaxhighlight>위를 설정했다면 나머지를 짜기 전에 테스트를 해보자. | |||
파이썬 콘솔로 접속하여.. python manage.py shell | |||
>>> from django.core.mail import EmailMessage | |||
>>> email = EmailMessage('title', 'content', to=['[email protected]']) | |||
>>> email.send() | |||
위 형태로 보내보면 메일이 간다. 이걸 확인했다면 settings.py 설정은 완료. | |||
==view 작성== | ==view 작성== | ||
=== 사전작업 === | ===사전작업=== | ||
구글이든 어떤 서비스에서든 <code>계정>보안</code>탭에서 앱의 엑세스를 허용한다. | 구글이든 어떤 서비스에서든 <code>계정>보안</code>탭에서 앱의 엑세스를 허용한다. | ||
===view 작성=== | |||
장고의 기능을 사용하면 우리가 해왔던 것들처럼 탬플릿을 사용할 수 있다. | |||
딱히 메일서버를 연동시키는 일도 없이 좋다.<syntaxhighlight lang="python"> | |||
from django.core.mail import EmailMessage # 이메일을 보내는 모듈. 파이썬에선 smtplib를 사용하지만, 장고 자체의 기능이 더 편리하다. | |||
from django.template.loader import render_to_string # 템플릿을 렌더링하기 위한 기능. | |||
def verification(request): | |||
if request.method == "POST": | |||
pass | |||
content = {'user' : request.user} | |||
msg_html = render_to_string('verification.html', content) | |||
msg = EmailMessage(subject="이메일 인증", | |||
body=msg_html, | |||
msg | to=[request.user.email], | ||
) | |||
msg | msg.content_subtype = 'html' # html 코드로 나타내기 위함. | ||
msg. | msg.send() | ||
messages.info(request, '이메일을 발송하였습니다~') | |||
return redirect('성공 후 보낼 주소') | |||
</syntaxhighlight> | |||
return redirect( | |||
= 관련에러 = | |||
=== SMTPServerDisconnected === | |||
설정에서 무언가 잘못되어 연결 자체가 되지 않은 경우. 포트번호가 다르거나 할 때 나온다. | |||
</ | === SMTPAuthenticationError === | ||
비밀번호 등의 설정이 잘못된 경우. 보통 Gmail을 사용할 때 발생하는데, Gmail에선 어플리케이션 비밀번호를 따로 관리한다. 위의 서비스별 안내를 참고해 진행해보자. | |||
<br /> |
2022년 7월 15일 (금) 18:26 기준 최신판
장고! 웹 프레임워크! 틀:장고
개요[편집 | 원본 편집]
장고에서 사용자에게 이메일을 보낼 일이 있다. 이러한 기능들을 한번에 관리하기 위한 앱.
제공자에 따른 서버명, 포트[편집 | 원본 편집]
메일 Provider | SMTP 서버명 | 포트 | 사전준비 |
---|---|---|---|
Gmail | smtp.gmail.com | 587 | 구글에서 앱 비밀번호까지 얻자. 링크 |
Naver | smtp.naver.com | 587 | |
Live | smtp.live.com | 587 | |
Daum | smtp.daum.net | 465 | |
nate.com | smtp.mail.nate.com | 465 | |
outlook.com | smtp.outlook.com | 587 |
과정[편집 | 원본 편집]
앱 생성[편집 | 원본 편집]
앱을 생성하고..
urls.py수정[편집 | 원본 편집]
앱의 url경로를 추가한다.
path('Email/', include('Email.urls'))
앱의 urls.py 작성[편집 | 원본 편집]
app_name = 'email'
from . import views
urlpatterns = [
path('send/', views.sendEmail, name='send')]
settings.py 수정[편집 | 원본 편집]
이메일을 보내기 위한 smtp 서버를 설정해주어야 한다. 없는 내용이니 다음과 같이, 이용하려는 서비스에 따라 추가해 준다.
각 서비스에 따른 설정은 위의 제공자에 따른 서버명, 포트를 참고하자.
# Email settings
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 465 # 장고 한그릇 뚝딱에선 587이라 기입되어 있다.
EMAIL_HOST_USER = '각자 이메일'
EMAIL_HOST_PASSWORD = '각자 암호'
위를 설정했다면 나머지를 짜기 전에 테스트를 해보자.
파이썬 콘솔로 접속하여.. python manage.py shell
>>> from django.core.mail import EmailMessage
>>> email = EmailMessage('title', 'content', to=['[email protected]'])
>>> email.send()
위 형태로 보내보면 메일이 간다. 이걸 확인했다면 settings.py 설정은 완료.
view 작성[편집 | 원본 편집]
사전작업[편집 | 원본 편집]
구글이든 어떤 서비스에서든 계정>보안
탭에서 앱의 엑세스를 허용한다.
view 작성[편집 | 원본 편집]
장고의 기능을 사용하면 우리가 해왔던 것들처럼 탬플릿을 사용할 수 있다.
딱히 메일서버를 연동시키는 일도 없이 좋다.
from django.core.mail import EmailMessage # 이메일을 보내는 모듈. 파이썬에선 smtplib를 사용하지만, 장고 자체의 기능이 더 편리하다.
from django.template.loader import render_to_string # 템플릿을 렌더링하기 위한 기능.
def verification(request):
if request.method == "POST":
pass
content = {'user' : request.user}
msg_html = render_to_string('verification.html', content)
msg = EmailMessage(subject="이메일 인증",
body=msg_html,
to=[request.user.email],
)
msg.content_subtype = 'html' # html 코드로 나타내기 위함.
msg.send()
messages.info(request, '이메일을 발송하였습니다~')
return redirect('성공 후 보낼 주소')
관련에러[편집 | 원본 편집]
SMTPServerDisconnected[편집 | 원본 편집]
설정에서 무언가 잘못되어 연결 자체가 되지 않은 경우. 포트번호가 다르거나 할 때 나온다.
SMTPAuthenticationError[편집 | 원본 편집]
비밀번호 등의 설정이 잘못된 경우. 보통 Gmail을 사용할 때 발생하는데, Gmail에선 어플리케이션 비밀번호를 따로 관리한다. 위의 서비스별 안내를 참고해 진행해보자.