[python] Marshmallow를 사용하여 이메일 발송 기능 구현하기

이메일 발송은 웹 애플리케이션에서 매우 중요한 기능입니다. 이메일을 보내는 과정에는 템플릿 작성, 이메일 주소 유효성 검사, SMTP 서버와의 통신 등 여러 단계가 있습니다. 이러한 작업을 간편하게 처리하기 위해 Marshmallow 라이브러리를 사용할 수 있습니다. Marshmallow는 Python을 위한 직렬화 및 역직렬화 라이브러리로, 데이터 유효성 검사 및 이메일 템플릿 작성에도 사용할 수 있습니다.

필요한 패키지 설치하기

먼저, Marshmallow와 이메일 발송을 위한 패키지를 설치해야 합니다. 다음과 같이 명령어를 실행하여 필요한 패키지를 설치할 수 있습니다.

pip install marshmallow
pip install flask-mail

이메일 발송 스키마 정의하기

이메일 발송에 필요한 데이터를 검증하기 위해 Marshmallow 스키마를 사용할 수 있습니다. 다음은 이메일 발송을 위한 스키마의 예시입니다.

from marshmallow import Schema, fields, validate

class EmailSchema(Schema):
    recipient = fields.Email(required=True)
    subject = fields.Str(required=True)
    body = fields.Str(required=True)

위의 코드에서 EmailSchema 클래스는 recipient, subject, body 필드를 가지고 있습니다. recipient 필드는 이메일 주소를 입력받고, subject 필드는 문자열을 입력받으며, body 필드는 이메일 본문을 입력받습니다. 필드에는 필요한 유효성 검사 규칙도 추가할 수 있습니다.

이메일 발송 기능 구현하기

이제 이메일 발송 함수를 작성해보겠습니다. Flask 애플리케이션에서 이메일을 보내기 위해 flask-mail 패키지를 사용할 수 있습니다. 다음은 이메일을 발송하는 함수의 예시입니다.

from flask_mail import Mail, Message

mail = Mail()

def send_email(recipient, subject, body):
    msg = Message(subject=subject, recipients=[recipient])
    msg.body = body
    mail.send(msg)

위의 코드에서 send_email 함수는 recipient, subject, body 매개변수를 받아 이메일을 발송합니다. Message 클래스를 사용하여 이메일에 필요한 정보를 설정한 후, mail.send 메서드를 사용하여 이메일을 보냅니다.

사용 예시

이제 위에서 작성한 이메일 발송 스키마와 함수를 사용해보겠습니다. Flask 애플리케이션의 뷰 함수에서 다음과 같이 이메일 데이터를 검증하고 이메일을 발송할 수 있습니다.

from flask import request
from your_app import app

@app.route('/send-email', methods=['POST'])
def send_email_view():
    email_data = EmailSchema().load(request.json)
    send_email(email_data['recipient'], email_data['subject'], email_data['body'])
    return '이메일이 발송되었습니다.'

위의 코드에서 /send-email URL로 POST 요청이 오면 입력된 이메일 데이터를 검증하고 이메일을 발송합니다. EmailSchema().load(request.json) 코드는 입력된 JSON 데이터를 EmailSchema에 따라 검증하고 유효한 데이터를 반환합니다.

결론

이제 Marshmallow를 사용하여 이메일 발송 기능을 구현하는 방법을 알아보았습니다. Marshmallow를 사용하면 데이터 유효성 검사 및 직렬화와 관련된 작업을 간편하게 처리할 수 있습니다. 이를 통해 안정적인 이메일 발송 기능을 빠르게 구현할 수 있습니다.

참고자료