[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
를 사용하여 로드하는 방법을 익혀두면 효과적으로 설정 정보를 관리할 수 있습니다.
참고 자료
python-dotenv
패키지 공식 문서: https://github.com/theskumar/python-dotenvsmtplib
패키지 공식 문서: https://docs.python.org/3/library/smtplib.html