Web/Django
[Web]django gmail 발송 for Mac
skwkiix
2023. 7. 27. 17:20
728x90
1. 준비
- 가상환경 설정
% virtualenv venv
% source venv/bin/activate
- 패키지 설치
- 폴더에 requirements.txt 생성 후
django-gmail % pip install -r requirements.txt
- 프로젝트 만들기
% django-admin startproject djangogmail
- 앱 만들기
$ cd djangogmail/
$ python manage.py startapp main
- 앱 등록하기
- 파일 경로 : djangogmail > djangogmail > settings.py
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"main"
]
- 확인
$ python manage.py runserver
2. 구글에서 인증키 발급
- 구글 계정 관리에 들어간다.
- [보안] 탭에 들어간다.
- [2단계 인증] 클릭
- [앱 비밀번호] 클릭
- 앱 비밀번호를 생성한다.
- 앱 선택 : 기타
- 이름 : django(자유)
- 생성된 비밀 번호 키를 복사합니다.
3. 프로젝트 설정
(1) Email 설정 세팅
- djangogmail > djangogmail > settings.py
# Email Settings
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = 'your_email' # 이메일 입력
EMAIL_HOST_PASSWORD = 'mvxs~' # 이메일 비밀번호 키 입력
(2) Urls.py 설정
- djangogmail > djangogmail > urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path('', include('main.urls'))
]
(3) main 폴더 설정
Templates 생성
- djangogmail > main > templates > main > index.html
<!DOCTYPE html>
<html lang="ko">
<head>
<title>Gmail using Django</title>
</head>
<body>
<div style="text-align:center;">
<h4> 연락 정보 </h4>
<form method="POST" action="{% url 'index' %}">
{% csrf_token %}
<input type="text" name="name" placeholder="이메일 제목" required>
<br>
<br>
<input type="email" name="email" placeholder="이메일 주소" required>
<br>
<br>
<textarea name="message" placeholder="메시지 입력" required></textarea>
<button type="submit">전송</button>
</form>
</div>
</body>
</html>
urls.py
html 의 action = 'index' 와 연결
- name = 'index'
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
views.py
- 메일 보내기 기능을 하는 index 함수 생성
from django.shortcuts import render
from django.http import HttpResponse
from django.core.mail import send_mail
from django.conf import settings
# Create your views here.
def index(request, ):
if request.method == "POST":
message = request.POST['message']
email = request.POST['email']
name = request.POST['name']
send_mail(
name,
message, # 메시지
'settings.EMAIL_HOST_USER',
[email]
)
return render(request, 'main/index.html')
4. 확인
$ python manage.py runserver
728x90