장고:이메일app 만들기: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
편집 요약 없음 |
편집 요약 없음 |
||
23번째 줄: | 23번째 줄: | ||
</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> | |||
==view 작성== | ==view 작성== | ||
=== 사전작업 === | ===사전작업=== | ||
구글이든 어떤 서비스에서든 <code>계정>보안</code>탭에서 앱의 엑세스를 허용한다. | 구글이든 어떤 서비스에서든 <code>계정>보안</code>탭에서 앱의 엑세스를 허용한다. | ||
< | |||
=== view 작성 === | |||
장고의 기능을 사용하면 우리가 해왔던 것들처럼 탬플릿을 사용할 수 있다. | |||
딱히 메일서버를 연동시키는 일도 없이 좋다.<syntaxhighlight lang="python"> | |||
from django.core.mail import send_mail, EmailMessage # 이메일을 보내는 모듈. 파이썬에선 smtplib를 사용하지만, 장고 자체의 기능이 더 편리하다. | |||
from django.template.loader import render_to_string # 템플릿을 렌더링하기 위한 기능. | |||
def sendEmail(request): | |||
# 데이터 처리 | |||
receiver = request.POST['receiver'] | |||
content = {'담을변수': 담길변수} | |||
###사전정보 입력 | |||
# 보내는 사람 정보 | |||
sender = "[email protected]" | |||
sender_password = "설정한 비밀번호" | |||
# 메시지객체생성 | |||
msg_html = render_to_string('탬플릿.html', content) | |||
subject = "제목입력" | |||
msg = EmailMessage(subject = subject, | |||
body = msg_html, | |||
from_email= sender, | |||
bcc= inputReceiver.split(',')) | |||
msg.content_subtype = 'html' | |||
# 메일발송 | |||
msg.send() | |||
return redirect(....) | |||
</syntaxhighlight>파이썬의 모듈을 이용한 복잡한 방식.<syntaxhighlight lang="python"> | |||
import smtplib # 이메일을 보내는 모듈 | import smtplib # 이메일을 보내는 모듈 | ||
from email.mime.text import MIMEText # 메일 본문을 html로 나타내기 위해 | from email.mime.text import MIMEText # 메일 본문을 html로 나타내기 위해 | ||
39번째 줄: | 81번째 줄: | ||
# 보내는 사람 정보 | # 보내는 사람 정보 | ||
sender = "[email protected]" | sender = "[email protected]" | ||
sender_password = " | sender_password = "설정한 비밀번호" | ||
# 메일서버로그인 | # 메일서버로그인 | ||
server = smtplib.SMTP_SSL('smtp.gmail.com', 465) | server = smtplib.SMTP_SSL('smtp.gmail.com', 465) |
2020년 11월 18일 (수) 23:31 판
장고! 웹 프레임워크! 틀:장고
개요
장고에서 사용자에게 이메일을 보낼 일이 있다. 이러한 기능들을 한번에 관리하기 위한 앱.
과정
앱 생성
앱을 생성하고..
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 = '각자 암호'
view 작성
사전작업
구글이든 어떤 서비스에서든 계정>보안
탭에서 앱의 엑세스를 허용한다.
view 작성
장고의 기능을 사용하면 우리가 해왔던 것들처럼 탬플릿을 사용할 수 있다.
딱히 메일서버를 연동시키는 일도 없이 좋다.
from django.core.mail import send_mail, EmailMessage # 이메일을 보내는 모듈. 파이썬에선 smtplib를 사용하지만, 장고 자체의 기능이 더 편리하다.
from django.template.loader import render_to_string # 템플릿을 렌더링하기 위한 기능.
def sendEmail(request):
# 데이터 처리
receiver = request.POST['receiver']
content = {'담을변수': 담길변수}
###사전정보 입력
# 보내는 사람 정보
sender = "[email protected]"
sender_password = "설정한 비밀번호"
# 메시지객체생성
msg_html = render_to_string('탬플릿.html', content)
subject = "제목입력"
msg = EmailMessage(subject = subject,
body = msg_html,
from_email= sender,
bcc= inputReceiver.split(','))
msg.content_subtype = 'html'
# 메일발송
msg.send()
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(....)