장고:이메일app 만들기: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
편집 요약 없음 |
편집 요약 없음 |
||
23번째 줄: | 23번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== settings.py 수정 === | ===settings.py 수정=== | ||
이메일을 보내기 위한 smtp 서버를 설정해주어야 한다. 없는 내용이니 다음과 같이, 이용하려는 서비스에 따라 추가해 준다.<syntaxhighlight lang="python"> | 이메일을 보내기 위한 smtp 서버를 설정해주어야 한다. 없는 내용이니 다음과 같이, 이용하려는 서비스에 따라 추가해 준다.<syntaxhighlight lang="python"> | ||
# Email settings | # Email settings | ||
32번째 줄: | 32번째 줄: | ||
EMAIL_HOST_USER = '각자 이메일' | EMAIL_HOST_USER = '각자 이메일' | ||
EMAIL_HOST_PASSWORD = '각자 암호' | EMAIL_HOST_PASSWORD = '각자 암호' | ||
</syntaxhighlight> | </syntaxhighlight>위를 설정했다면 나머지를 짜기 전에 테스트를 해보자. | ||
파이썬 콘솔로 접속하여.. python manage.py shell | |||
>>> from django.core.mail import EmailMessage | |||
>>> email = EmailMessage('title', 'content', to=['[email protected]']) | |||
>>> email.send() | |||
위 형태로 보내보면 메일이 간다. 이걸 확인했다면 settings.py 설정은 완료. | |||
==view 작성== | ==view 작성== | ||
38번째 줄: | 49번째 줄: | ||
구글이든 어떤 서비스에서든 <code>계정>보안</code>탭에서 앱의 엑세스를 허용한다. | 구글이든 어떤 서비스에서든 <code>계정>보안</code>탭에서 앱의 엑세스를 허용한다. | ||
=== view 작성 === | ===view 작성=== | ||
장고의 기능을 사용하면 우리가 해왔던 것들처럼 탬플릿을 사용할 수 있다. | 장고의 기능을 사용하면 우리가 해왔던 것들처럼 탬플릿을 사용할 수 있다. | ||
딱히 메일서버를 연동시키는 일도 없이 좋다.<syntaxhighlight lang="python"> | 딱히 메일서버를 연동시키는 일도 없이 좋다.<syntaxhighlight lang="python"> | ||
from django.core.mail import | from django.core.mail import EmailMessage # 이메일을 보내는 모듈. 파이썬에선 smtplib를 사용하지만, 장고 자체의 기능이 더 편리하다. | ||
from django.template.loader import render_to_string # 템플릿을 렌더링하기 위한 기능. | from django.template.loader import render_to_string # 템플릿을 렌더링하기 위한 기능. | ||
def verification(request): | |||
def | if request.method == "POST": | ||
pass | |||
content = {'user' : request.user} | |||
msg_html = render_to_string('verification.html', content) | |||
content = {' | msg = EmailMessage(subject="이메일 인증", | ||
body=msg_html, | |||
to=[request.user.email], | |||
) | |||
msg.content_subtype = 'html' # html 코드로 나타내기 위함. | |||
msg_html = render_to_string(' | |||
msg = EmailMessage(subject = | |||
msg.content_subtype = 'html' | |||
msg.send() | msg.send() | ||
return redirect( | messages.info(request, '이메일을 발송하였습니다~') | ||
return redirect('성공 후 보낼 주소') | |||
</syntaxhighlight>파이썬의 모듈을 이용한 복잡한 방식.<syntaxhighlight lang="python"> | </syntaxhighlight>파이썬의 모듈을 이용한 복잡한 방식.<syntaxhighlight lang="python"> | ||
import smtplib # 이메일을 보내는 모듈 | import smtplib # 이메일을 보내는 모듈 |
2020년 11월 26일 (목) 11:47 판
장고! 웹 프레임워크! 틀:장고
개요
장고에서 사용자에게 이메일을 보낼 일이 있다. 이러한 기능들을 한번에 관리하기 위한 앱.
과정
앱 생성
앱을 생성하고..
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('성공 후 보낼 주소')
파이썬의 모듈을 이용한 복잡한 방식.
import smtplib # 이메일을 보내는 모듈
from email.mime.text import MIMEText # 메일 본문을 html로 나타내기 위해
from email.mime.multipart import MEMEMultipart # 메시지객체를 위해
def sendEmail(request):
# 어디로 보낼 것인가? 입력받은 데이터를 토대로.
receiver = request.POST['receiver']
###################사전정보 입력
# 보내는 사람 정보
sender = "[email protected]"
sender_password = "설정한 비밀번호"
# 메일서버로그인
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login(sender, sender_password)
# 메시지객체생성
msg = MIMEMultipart('alternative')
msg['Subject'] = "제목입력"
msg['From'] = sender
msg['To'] = receiver
msg.attach(content)
# 메일발송
server.sendmail(msg['From'], msg['To'], )
server.quit()
return redirect(....)