장고:이메일app 만들기

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2020년 11월 26일 (목) 11:47 판
둘러보기로 이동 검색으로 이동

장고! 웹 프레임워크! 틀:장고

  1. 장고:개요
  2. 장고:웹페이지설계
    1. 장고:앱
    2. 장고:url
    3. 장고:model
      1. 장고:DB
      2. 장고:모델 필드
      3. 장고:모델의 변경
    4. 장고:view
      1. 장고:클래스형 뷰, 제네릭 뷰
      2. 장고:view 각종 기능
    5. 장고:template
    6. 장고:static. 정적파일 사용하기
      1. 장고:CSS 사용하기
      2. 장고:JS 사용하기
      3. 장고:글꼴 사용
      4. 장고:부트스트랩
    7. 장고:media. 미디어 파일 사용하기
  3. 장고:관리자페이지
  4. 장고:settings.py
  5. 장고:기능구현
    1. 장고:회원관리
    2. 장고:유저
    3. 장고:커스텀 유저
    4. 장고:소셜로그인
    5. 장고:입력받기
    6. 장고:저장된 내용 활용하기
    7. 장고:변수 내보내기
    8. 장고:글쓰기
    9. 장고:페이징(페이지나누기)
    10. 장고:답변쓰기(댓글쓰기)
    11. 장고:추천,즐겨찾기
    12. 장고:새글(최신글) 나타내기
    13. 장고:썸머노트 설치
    14. 장고:네비게이션 바 만들기
    15. 장고:검색기능
    16. 장고:카테고리 만들기
    17. 장고:사진 올리기
    18. 장고:파일 업로드
    19. 장고:이메일app 만들기
    20. 장고:매직 그리드
  6. 장고:웹서비스
    1. 장고:Git
    2. 장고:리눅스에 올리기
    3. 장고:우분투에 올리기(nginx 사용)
    4. 장고:도커로 올리기
  7. 장고:팁

개요

장고에서 사용자에게 이메일을 보낼 일이 있다. 이러한 기능들을 한번에 관리하기 위한 앱.

과정

앱 생성

앱을 생성하고..

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(....)