[python] SQLAlchemy-Utils를 사용하여 데이터베이스에서 이메일 발송하기

이메일 메시지를 전송하는 작업은 대부분 데이터베이스와 연관되어 있습니다. SQLAlchemy-Utils는 SQLAlchemy의 부가 기능을 제공하여 데이터베이스에서 작업을 쉽게 수행할 수 있도록 도와줍니다. 이 기능은 데이터베이스에 저장된 이메일 주소를 사용하여 이메일을 전송하는 데 특히 유용합니다.

이번 포스트에서는 SQLAlchemy-Utils를 사용하여 데이터베이스에서 이메일을 발송하는 방법에 대해 살펴보겠습니다.

필수 패키지 설치

먼저 다음과 같이 SQLAlchemy-Utils를 설치합니다.

pip install sqlalchemy-utils

데이터베이스 모델 생성

이메일 주소를 저장할 수 있는 Email 데이터베이스 모델을 정의합니다.

from sqlalchemy_utils import EmailType
from sqlalchemy import Column, Integer, create_engine
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Email(Base):
    __tablename__ = 'emails'
    id = Column(Integer, primary_key=True)
    address = Column(EmailType)

데이터베이스에 이메일 주소 저장

이제 데이터베이스에 이메일 주소를 저장합니다. SQLAlchemy를 사용하여 새 이메일 주소를 만들고 데이터베이스에 추가할 수 있습니다.

from sqlalchemy.orm import sessionmaker

# 데이터베이스 엔진 생성
engine = create_engine('sqlite:///emails.db')

# 테이블 생성
Base.metadata.create_all(engine)

# SQLAlchemy 세션 생성
Session = sessionmaker(bind=engine)
session = Session()

# 새 이메일 주소 추가
new_email = Email(address='example@example.com')
session.add(new_email)
session.commit()

이메일 발송

이제 데이터베이스에 저장된 이메일 주소를 사용하여 이메일을 발송할 수 있습니다.

import smtplib
from email.message import EmailMessage

# 데이터베이스에서 이메일 주소 가져오기
email = session.query(Email).filter_by(address='example@example.com').first()

# 이메일 전송
msg = EmailMessage()
msg.set_content('이것은 테스트 이메일입니다.')
msg['Subject'] = '테스트 이메일'
msg['From'] = 'sender@example.com'
msg['To'] = email.address

server = smtplib.SMTP('smtp.example.com')
server.send_message(msg)
server.quit()

결론

이번 포스트에서는 SQLAlchemy-Utils를 사용하여 데이터베이스에서 이메일을 발송하는 방법에 대해 살펴보았습니다. SQLAlchemy-Utils를 사용하면 데이터베이스와 이메일 전송을 효율적으로 연동하여 작업할 수 있습니다. SQLAlchemy-Utils의 다양한 기능을 활용하여 더 많은 작업을 다루어 보시기 바랍니다.

더 자세한 내용은 SQLAlchemy-Utils 문서를 참고하시기 바랍니다.