FastAPI는 Python을 기반으로 한 빠르고 현대적인 웹 프레임워크입니다. FastAPI는 강력한 기능과 속도를 제공하며, 쉽게 사용할 수 있는 API를 구축할 수 있습니다. 이번에는 FastAPI에서 이메일 전송 기능을 구현하는 방법에 대해 알아보겠습니다.
이메일 전송 라이브러리 선택
이메일 전송을 구현하기 위해서는 이메일 전송을 위한 라이브러리를 선택해야 합니다. Python에서는 다양한 이메일 전송 라이브러리가 제공되고 있습니다. 예를 들어, smtplib
, sendgrid
, mailgun
등이 있습니다. 이 중에서도 smtplib
는 Python 표준 라이브러리로 기본적인 이메일 전송 기능을 제공합니다.
FastAPI에서 이메일 전송 구현하기
이제 FastAPI에서 이메일 전송 기능을 구현해보겠습니다. 먼저, smtplib
라이브러리를 사용하여 이메일을 전송하는 함수를 작성합니다. 다음은 이를 위한 예제 코드입니다.
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def send_email(sender_email: str, receiver_email: str, subject: str, body: str):
# SMTP 서버 정보 설정
smtp_server = "smtp.gmail.com"
smtp_port = 587
# 이메일 내용 설정
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# 이메일 전송
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(sender_email, "password") # 이메일 서버에 로그인
server.send_message(msg) # 이메일 전송
위의 코드에서 send_email
함수는 이메일을 전송하는 기능을 제공합니다. sender_email
은 발신자 이메일 주소, receiver_email
은 수신자 이메일 주소, subject
는 이메일 제목, body
는 이메일 내용입니다. 이 함수 내부에서 smtplib
를 사용하여 이메일을 전송하는 로직을 구현합니다.
이제 FastAPI 애플리케이션에서 send_email
함수를 사용하여 이메일을 전송할 수 있습니다. 다음은 이를 위한 예제 코드입니다.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class EmailSchema(BaseModel):
sender_email: str
receiver_email: str
subject: str
body: str
@app.post("/send-email")
async def send_email_route(email: EmailSchema):
send_email(email.sender_email, email.receiver_email, email.subject, email.body)
return {"message": "이메일 전송이 완료되었습니다."}
위의 예제 코드는 FastAPI 애플리케이션에서 이메일 전송을 위한 라우트를 구현한 것입니다. /send-email
엔드포인트로 POST 요청을 보내면, EmailSchema
모델을 통해 발신자 이메일, 수신자 이메일, 제목, 내용을 전달하고, send_email_route
함수에서 send_email
함수를 호출하여 이메일을 전송합니다.
결론
FastAPI에서 이메일 전송 기능을 구현하는 방법에 대해 알아보았습니다. smtplib
라이브러리를 사용하여 이메일을 전송하는 함수를 작성하고, FastAPI 애플리케이션에서 이 함수를 사용하여 이메일을 전송할 수 있습니다. 이를 통해 이메일 전송 기능을 간단하게 구현할 수 있습니다.
참고 문서: