English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Flask 이메일 전송

웹 기반 애플리케이션은 일반적으로 사용자에게/클라이언트가 이메일을 보내는 기능. Flask-Mail 확장은 어떤 이메일 서버 설정도 간단하게 설정할 수 있게 합니다

처음에는 Flask-Mail 확장은 pip 도구를 사용하여 설치할 수 있습니다. 다음과 같이 합니다 -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
pip install Flask-Mail

그런 다음 다음 애플리케이션 파라미터 값 설정으로 Flask를 구성해야 합니다-Mail。

번호파라미터설명
1MAIL_SERVER메일 서버의 이름/IP 주소
2MAIL_PORT서버의 포트 번호
3MAIL_USE_TLS사용/전송 보안 계층 암호화 사용 중지
4MAIL_USE_SSL사용/보안 소켓 계층 암호화 사용 중지
5MAIL_DEBUG디버깅 지원, 기본적으로 Flask 애플리케이션의 디버깅 상태
6MAIL_USERNAME발신자의 사용자 이름
7MAIL_PASSWORD발신자의 비밀번호
8MAIL_DEFAULT_SENDER기본 발신자 설정
9MAIL_MAX_EMAILS전송할 메일의 최대 개수 설정
10MAIL_SUPPRESS_SENDapp.testing이 true로 설정되면 전송이 억제됩니다
11MAIL_ASCII_ATTACHMENTStrue로 설정되면 첨부 파일 이름을 ASCII로 변환합니다

flask-mail 모듈은 다음 중요한 클래스 정의를 포함하고 있습니다.

Mail 클래스

이는 이메일 메시지 요구를 관리합니다. 클래스 생성자는 다음 형식을 가집니다 -

번호메서드설명
1send()Message 클래스 객체의 내용을 전송합니다
2connect()이메일 호스트와 연결을 엽니다
3send_message()메시지 객체를 전송합니다

Message 클래스

이는 이메일을 캡슐화한 것입니다. Message 클래스의 생성자는 여러 가지 파라미터를 가집니다 -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
flask-mail.Message(subject, recipients, body, html, sender, cc, bcc, 
    reply-to, date, charset, extra_headers, mail_options, rcpt_options)

Message 클래스 메서드

attach() - 메시지에 첨부 파일을 추가합니다. 이 메서드는 다음 파라미터를 받습니다 - filename - 附加할 파일의 이름 content_type - 파일의 MIME 타입 data - 원본 파일 데이터 disposition - 내용 처리, 필요한 경우

add_recipient() - 메시지에 다른 수신자를 추가합니다

다음 예제에서는 Google의 Gmail 서비스의 SMTP 서버가 Flask로 사용됩니다-Mail 설정의 MAIL_SERVER를 가져옵니다。

제1단계 - 코드에서 flask-mail 모듈에서 Mail과 Message 클래스를 도입합니다。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from flask_mail import Mail, Message

제2단계 - 그런 다음 다음 설정에 따라 Flask를 구성합니다-Mail。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
app.config['MAIL_SERVER']='smtp.gmail.com'
 app.config['MAIL_PORT'] = 465
 app.config['MAIL_USERNAME'] = '[email protected]'
 app.config['MAIL_PASSWORD'] = "*****"
 app.config['MAIL_USE_TLS'] = False
 app.config['MAIL_USE_SSL'] = True

제3단계 - Mail 클래스의 인스턴스를 생성합니다。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
mail = Mail(app)

제4단계 - URL 규칙에 맵핑된 Python 함수(‘/‘)에서 Message 객체를 설정합니다。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
@app.route("/")
 def index():
     msg = Message('Hello', sender='[email protected]', recipients=['[email protected]'])
     msg.body = "This is the email body"
     mail.send(msg)
     return "Sent"

제5단계 - 전체 코드는 다음과 같습니다. Python Shell에서 다음 스크립트를 실행하고 URL에 접근하세요: http://localhost:5000/。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask
 from flask_mail import Mail, Message
 app = Flask(__name__)
 mail=Mail(app)
 app.config['MAIL_SERVER']='smtp.gmail.com'
 app.config['MAIL_PORT'] = 465
 app.config['MAIL_USERNAME'] = '[email protected]'
 app.config['MAIL_PASSWORD'] = "*****"
 app.config['MAIL_USE_TLS'] = False
 app.config['MAIL_USE_SSL'] = True
 mail = Mail(app)
 @app.route("/")
 def index():
     msg = Message('Hello', sender='[email protected]', recipients=['[email protected]'])
     msg.body = "Hello Flask message sent from Flask-Mail"
     mail.send(msg)
     return "Sent"
 if __name__ == '__main__':
     app.run(debug=True)

주의하세요, Gmail 서비스에서의 내장된 불안전한 기능은 이 로그인 시도를 차단할 수 있으며, 보안级别를 낮추어야 할 수 있습니다. 여러분의 Gmail 계정에 로그인하여  이 링크보안성을 줄이기 위해.