[python] 웹 애플리케이션에서의 이메일 발송 기능 구현

이메일은 웹 애플리케이션에서 중요한 기능 중 하나입니다. 사용자에게 이메일을 발송하여 회원 가입 확인, 비밀번호 재설정 등을 할 수 있습니다. 이번 글에서는 Python과 Django를 사용하여 웹 애플리케이션에서 이메일 발송 기능을 구현하는 방법을 알아보겠습니다.

1. SMTP(Simple Mail Transfer Protocol) 설정

이메일을 전송하기 위해서는 SMTP 서버의 정보가 필요합니다. 대부분의 이메일 서비스 제공업체는 SMTP 서버와 포트를 제공하고 있으며, 해당 정보를 알아야 합니다. 이 정보를 settings.py 파일에 설정해야 합니다.

# settings.py

EMAIL_HOST = 'your_smtp_server'
EMAIL_PORT = 'your_smtp_port'
EMAIL_HOST_USER = 'your_email_address'
EMAIL_HOST_PASSWORD = 'your_email_password'
EMAIL_USE_TLS = True  # TLS 보안 사용 여부

위 코드에서 ‘your_smtp_server’, ‘your_smtp_port’, ‘your_email_address’, ‘your_email_password’은 각각 프로젝트에 맞게 설정해야 합니다.

2. 이메일 전송 함수 작성

이제 이메일을 전송하는 함수를 작성해보겠습니다. Django에서는 django.core.mail 모듈을 제공하며, 해당 모듈을 사용하여 이메일을 전송할 수 있습니다.

# views.py

from django.core.mail import send_mail

def send_email(to_email, subject, message):
    send_mail(
        subject=subject,
        message=message,
        from_email='your_email_address',
        recipient_list=[to_email],
        fail_silently=False,
    )

위 코드에서 send_mail 함수를 사용하여 이메일을 전송합니다. to_email은 대상 이메일 주소, subject는 이메일 제목, message는 이메일 내용을 나타냅니다. from_email은 발신 이메일 주소입니다. recipient_list에는 이메일을 수신하는 주소를 리스트 형태로 전달합니다. fail_silently는 이메일 전송 실패 시 에러를 어떻게 처리할지 설정하는 옵션입니다.

3. 이메일 발송 예제

이메일 발송 함수를 만들었으니, 실제로 호출하여 이메일을 발송하는 예제를 살펴보겠습니다.

# views.py

from django.shortcuts import render
from .email import send_email

def send_confirmation_email(request):
    # 사용자에게 이메일 발송
    to_email = 'user@example.com'
    subject = '회원 가입 확인 이메일'
    message = '회원 가입이 성공적으로 완료되었습니다.'
    send_email(to_email, subject, message)

    return render(request, 'success.html')

위의 예제는 send_confirmation_email 함수를 통해 사용자에게 회원 가입을 알리는 이메일을 보내는 예제입니다. to_email, subject, message를 설정한 후 send_email 함수를 호출하여 이메일을 발송합니다. 이메일 발송이 성공하면 ‘success.html’을 렌더링하여 사용자에게 회원 가입 성공 메시지를 보여줍니다.

마무리

Python과 Django를 사용하여 웹 애플리케이션에서 이메일 발송 기능을 구현하는 방법을 알아보았습니다. SMTP 설정을 통해 이메일 서버에 접속하고, django.core.mail 모듈을 사용하여 이메일을 전송하는 방법을 사용했습니다. 이를 통해 회원 가입 확인, 비밀번호 재설정 등의 기능을 구현할 수 있습니다.