FastAPI를 사용하여 이메일 발송 기능 구현하기

FastAPI는 빠르고 현대적인 웹 프레임워크로, 이메일 발송 기능을 구현하는 데에도 효과적입니다. 이번 블로그 포스트에서는 FastAPI를 사용하여 이메일 발송 기능을 구현하는 방법을 알아보겠습니다.

1. FastAPI 프로젝트 생성하기

먼저, FastAPI 프로젝트를 생성합니다. Python 3.7 이상의 환경에서 pip을 사용하여 FastAPI를 설치합니다:

pip install fastapi

FastAPI를 설치한 후, 프로젝트 폴더를 생성하고 해당 폴더에서 다음 명령어를 실행하여 FastAPI 앱을 생성합니다:

fastapi new my_email_app

2. 이메일 발송 함수 작성하기

my_email_app 폴더로 이동한 후, app 폴더 내에 email.py라는 파일을 생성합니다. 이 파일에는 이메일 발송 함수를 작성할 것입니다.

import smtplib
from email.message import EmailMessage

def send_email(subject: str, body: str, recipient: str):
    # 이메일 설정
    msg = EmailMessage()
    msg["Subject"] = subject
    msg["From"] = "your_email@example.com"
    msg["To"] = recipient
    msg.set_content(body)

    # SMTP 서버에 연결하여 이메일 발송
    with smtplib.SMTP("smtp.example.com", 587) as smtp:
        smtp.ehlo()
        smtp.starttls()
        smtp.login("your_email@example.com", "your_password")
        smtp.send_message(msg)

위의 코드는 send_email() 함수를 정의하고, SMTP 프로토콜을 사용하여 이메일을 발송하는 로직을 포함하고 있습니다. 이메일의 제목, 본문 내용 및 수신자 주소를 인자로 받는 send_email() 함수는 이메일을 구성하고 SMTP 서버를 통해 실제 이메일을 발송합니다.

3. 라우터에 이메일 발송 기능 연결하기

FastAPI에서는 라우터를 통해 HTTP 요청을 처리합니다. 이제 app 폴더 내에 main.py라는 파일을 열고, 다음 코드를 추가하여 이메일 발송 기능을 연결합니다.

from fastapi import FastAPI
from .email import send_email

app = FastAPI()

@app.get("/send_email")
def email_endpoint(subject: str, body: str, recipient: str):
    send_email(subject, body, recipient)
    return {"message": "Email sent successfully!"}

위의 코드에서 /send_email 경로에 대한 GET 요청을 처리하는 함수가 email_endpoint()입니다. 이 함수는 이메일 발송 함수를 호출하고, 성공적으로 이메일을 발송한 후에는 JSON 응답을 반환합니다.

4. FastAPI 앱 실행하기

이제 FastAPI 앱을 실행하여 이메일 발송 기능을 테스트할 수 있습니다. 터미널에서 다음 명령어를 실행하여 FastAPI 앱을 실행합니다:

uvicorn app.main:app --reload

웹 브라우저나 API 개발 도구를 사용하여 다음 URL에 접속하면, 이메일 발송 기능을 테스트할 수 있습니다:

http://localhost:8000/send_email?subject=Test&body=This+is+a+test+email.&recipient=recipient@example.com

이메일 발송이 성공적으로 이루어지면, JSON 응답으로 “Email sent successfully!” 메시지가 표시됩니다.

마무리

이와 같이 FastAPI를 사용하여 간편하게 이메일 발송 기능을 구현할 수 있습니다. FastAPI의 간결하고 빠른 특성을 활용하여 웹 애플리케이션을 개발하고 운영할 때, 이메일 발송과 같은 기능을 더욱 효과적으로 구현할 수 있습니다.

#FastAPI #이메일발송