[python] FastAPI에서 이메일 전송 구현하기

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 애플리케이션에서 이 함수를 사용하여 이메일을 전송할 수 있습니다. 이를 통해 이메일 전송 기능을 간단하게 구현할 수 있습니다.

참고 문서: