[python] python-dotenv를 사용하여 이메일 발송 설정하기

이메일 발송에 필요한 설정 정보를 소스 코드에 하드코딩하는 것은 보안에 취약할 수 있습니다. 대신 python-dotenv를 사용하여 이메일 발송 설정 정보를 외부 파일에 저장하고, 소스 코드에서 이 파일을 읽어오는 방법을 알아보겠습니다.

python-dotenv란?

python-dotenv는 파이썬을 위한 패키지로, .env 파일에서 설정 변수를 로드하는 기능을 제공합니다. 이를 통해 소스 코드에서 설정 정보를 하드코딩하는 대신 외부 파일에서 로드하여 보안을 강화할 수 있습니다.

설치하기

python-dotenv를 설치하려면, 터미널에서 다음 명령을 실행합니다:

pip install python-dotenv

.env 파일 생성하기

이메일 발송 설정 정보를 저장할 .env 파일을 생성해야 합니다. .env 파일은 소스 코드와 동일한 디렉토리에 위치해야 합니다.

.env 파일 내에는 다음과 같이 설정 변수를 선언해야 합니다:

EMAIL_HOST=your_smtp_host
EMAIL_PORT=your_smtp_port
EMAIL_USERNAME=your_username
EMAIL_PASSWORD=your_password

소스 코드에서 .env 파일 사용하기

이제 소스 코드에서 .env 파일을 사용하여 이메일 발송 설정 정보를 로드해보겠습니다. 아래는 smtplib 패키지를 사용하여 이메일을 발송하는 예시 코드입니다:

import os
from dotenv import load_dotenv
import smtplib

# .env 파일 로드
load_dotenv()

# .env 파일에서 설정 변수 읽어오기
email_host = os.getenv("EMAIL_HOST")
email_port = os.getenv("EMAIL_PORT")
email_username = os.getenv("EMAIL_USERNAME")
email_password = os.getenv("EMAIL_PASSWORD")

# SMTP 서버 연결
smtp_server = smtplib.SMTP(email_host, email_port)
smtp_server.ehlo()
smtp_server.starttls()
smtp_server.login(email_username, email_password)

# 이메일 발송
sender = email_username
receiver = "example@example.com"
subject = "Hello, World!"
body = "This is a test email."

message = f"From: {sender}\nTo: {receiver}\nSubject: {subject}\n\n{body}"
smtp_server.sendmail(sender, receiver, message)

# SMTP 서버 연결 종료
smtp_server.quit()

이렇게 .env 파일을 사용하여 이메일 발송 설정 정보를 로드하면, 설정 변수 값이 변경되더라도 소스 코드를 수정할 필요 없이 외부 파일만 수정하면 됩니다.

결론

python-dotenv를 사용하면 이메일 발송과 같은 설정 정보를 소스 코드에서 분리하여 보안을 강화할 수 있습니다. .env 파일에 설정 변수를 저장하고, python-dotenv를 사용하여 로드하는 방법을 익혀두면 효과적으로 설정 정보를 관리할 수 있습니다.

참고 자료