[Flask] email 응용

 단순하게 버튼을 눌렀을 때, 이미 입력된 문자열을 전송하는 방식으로 예제를 작성

구글 앱, Flask-Mail 모듈을 사용


사전 준비 작업

- google 계정 관리>보안>2단계 인증 클릭



- 앱 비밀번호 클릭, 앱 생성


※ 앱 생성 시, 16자리 코드가 단 한번 생성 되므로, 해당 비밀번호 저장하여 사용 할 것


- python : Flask-Mail 설치

pip install Flask-Mail


실습 코드

※ flask server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from flask import Flask, render_template, request
from flask_mail import Mail, Message
 
app = Flask(__name__)
 
# 메일 설정
# TLS 방식 
app.config['MAIL_SERVER'= "smtp.gmail.com" #메일서버
app.config['MAIL_PORT'= 587  # TLS 사용 시
app.config["MAIL_USERNAME"= '구글 사용자 메일 주소' 
app.config["MAIL_PASSWORD"= '앱 비밀번호-16자리'  # Gmail 계정 앱 비밀번호를 사용
app.config['MAIL_USE_TLS'= True
app.config['MAIL_USE_SSL'= False
 
mail = Mail(app) #메일 객체 생성
 
@app.route('/', methods=['GET''POST'])
def home():
    if request.method == 'POST':
        msg = Message("Hey", sender='구글 사용자 메일 주소', recipients=['받을 메일 주소'])
        msg.body = "Hey how are you?" #전송할 메일 내용
        mail.send(msg) #메일 전송
        return "Email Sent!" #페이지 리턴, 다른 페이지 이동의 경우 render_template 메소드 사용
    return render_template('email_index.html')
 
if __name__ == '__main__':
    app.run(debug=True)
cs


※ email_index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang="ko">
 
<!--버튼 클릭 시, 메일 단순 전송-->
<!-- post 방식 사용 -->
<body>
    <p>Flask-Mail turorial</p>
    <form method="POST" action="/">
        <button>send email</button>
    </form>
</body>
 
</html>
cs

※ 주의사항 및 확인사항
- Message 객체의 sender 지정 값을 변경하는 경우, 전송이 불가해지는 현상 발경
- 앱 비밀번호-16자리의 숫자의 경우  띄어쓰기를 모두 제거해야 함

댓글