
유저들에게 웹페이지의 피드백을 메일로 받기 위해서 gmail을 보낼 수 있는 기능을 추가했다.
총 네가지 단계를 통해 메일 보내기 기능을 추가할 수 있다.
Google Account: https://myaccount.google.com/
구글 사이트에 접속해 내 계정 권한을 낮춰줘야한다.
사이드바의 보안 탭으로 이동해 보안 수준이 낮은 앱에 액세스부분을 활성화 시켜준다.
이 기능을 활성화하면 해외에서 접속 시도가 자주 일어난다고 하던데, 나는 구글 계정이 2개라 안쓰는 계정에 연동했다.
settings.py의 맨 아래 추가해줬다.
# send email
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.googlemail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = '보내는 사람 메일'
EMAIL_HOST_PASSWORD = '메일 비밀번호'
내 html 파일 전체를 가져왔다.
form 태그를 이용해 유저가 제목과 본문을 입력할 수 있게만들었다.
Send Feedback 버튼을 누르면 POST타입으로 데이터가 전송되며 다른 화면으로 변경된다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="../static/css/index.css" rel="stylesheet" type="text/css" />
<link href="../static/css/feedback.css" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<div class="container">
<h2>UR-Type을 사용해 주셔서 감사합니다.</h2>
보내주신 피드백은 반영될 수 있도록 노력하겠습니다.
<br/><br/>
<form action="Send_Email" method="POST" id="Send_Email"> {% csrf_token %}
제목 : <input type="text" name="title" id="title">
<br/><br/>
<textarea rows="10" cols="50" name="message" id="message"></textarea>
</form>
<button class="glow-on-hover" type="button"> Send Feedback </button>
</div>
</body>
<script type="text/javascript">
/* 유효성 검사 후 값 전송 */
$('.glow-on-hover').click(function(){
if( $('#title').val() == '' || $('#message').val() == '') {
alert("제목과 내용을 입력해 주세요.");
}
Send_Email.submit();
})
</script>
</html>
html에서 받아온 값을 사용한다.
POST타입으로 받았는지 검사 후 title,message 변수에 받아온 값을 넣어준다.
settings.py에서 설정한 값을 가져와 email_from 변수에 넣어줬다.
나는 내가 나한테 메일을 보낼거라 to부분에 내 이메일을 한번 더 넣어줬다.
메일이 전송된 후 thanks.html 파일로 이동한다.
from django.core.mail import EmailMessage
from django.conf import settings
def Send_Email(request):
if request.method == 'POST' :
title = request.POST.get('title')
message = request.POST.get('message')
email_from = settings.EMAIL_HOST_USER
email = EmailMessage(title, message, to=[email_from])
email.send()
return render(request, 'thanks.html')