Flask-RESTful은 Flask 프레임워크의 확장 모듈 중 하나로, RESTful 웹 서비스를 쉽게 구축할 수 있도록 도와줍니다. 이번 포스트에서는 Flask-RESTful을 사용하여 SMTP(Simple Mail Transfer Protocol) 서버와 연동하여 이메일을 발송하는 방법에 대해 알아보겠습니다.
SMTP 서버 설정하기
SMTP 서버를 사용하기 위해서는 먼저 SMTP 서버의 설정이 필요합니다. 대표적인 SMTP 서버로는 Gmail의 SMTP 서버가 있습니다. Gmail SMTP 서버를 사용하기 위해서는 Gmail 계정의 보안 설정에서 “액세스 허용 설정”을 해줘야 합니다.
Flask-RESTful 설치하기
먼저 Flask-RESTful을 설치해야 합니다. 아래의 명령어를 사용하여 Flask-RESTful을 설치할 수 있습니다.
pip install flask-restful
필요한 라이브러리 임포트하기
SMTP 서버와 연동하기 위해 Python 내장 라이브러리인 smtplib와 email을 사용할 것입니다. 다음과 같이 필요한 라이브러리를 임포트합니다.
import smtplib
from email.mime.text import MIMEText
SMTP 서버와 연결하기
SMTP 서버와 연결하기 위해 다음과 같은 정보를 설정해야 합니다:
- SMTP 서버 호스트 및 포트 번호
- 보안 설정 (SSL 또는 TLS)
- 로그인 정보 (이메일 주소 및 비밀번호)
smtp_host = 'smtp.gmail.com'
smtp_port = 587
smtp_secure = True
smtp_username = 'your_email@gmail.com'
smtp_password = 'your_password'
smtp_conn = smtplib.SMTP(smtp_host, smtp_port)
if smtp_secure:
smtp_conn.starttls()
smtp_conn.login(smtp_username, smtp_password)
이메일 발송하기
이제 SMTP 서버와 연결되었으므로, 실제로 이메일을 발송해보겠습니다. Flask-RESTful을 사용하여 POST 메서드로 이메일 발송 요청을 받을 수 있도록 API 엔드포인트를 구현합니다. 이메일 발송에 필요한 정보를 JSON 형식으로 받아옵니다.
from flask import Flask, request
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class SendEmail(Resource):
def post(self):
data = request.get_json()
receiver = data.get('receiver')
subject = data.get('subject')
content = data.get('content')
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = smtp_username
msg['To'] = receiver
smtp_conn.sendmail(smtp_username, receiver, msg.as_string())
return {'message': 'Email sent successfully'}
api.add_resource(SendEmail, '/send_email')
if __name__ == '__main__':
app.run(debug=True)
위의 코드에서는 /send_email 엔드포인트로 POST 메서드를 정의하고, JSON 형식으로 받아온 수신자, 제목, 내용을 이용하여 이메일을 발송합니다. 발송이 완료되면 성공 메시지를 반환합니다.
요약
이번 포스트에서는 Flask-RESTful을 사용하여 SMTP 서버와 연동하여 이메일을 발송하는 방법을 알아보았습니다. SMTP 서버 설정, 필요한 라이브러리 임포트, SMTP 서버와 연결, 이메일 발송하는 과정을 순서대로 설명하였습니다. Flask-RESTful을 활용하여 이메일 발송 기능을 구현할 수 있습니다.
참고 자료: