개발 문서/Python

Python으로 이메일 자동 전송하기

copg 2025. 3. 12. 14:12
728x90
반응형

 Python의 smtplib와 email 라이브러리를 활용해 이메일을 자동 전송하는 방법

필요한 라이브러리

Python 표준 라이브러리에 포함되어 있어 추가 설치가 필요하지 않습니다.

  • smtplib: 메일 서버와의 통신을 위한 라이브러리
  • email: 이메일 내용을 구성하기 위한 라이브러리

SMTP 서버 설정 및 이메일 전송

아래는 이메일을 전송하기 위한 상세한 예제 코드입니다.

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# SMTP 서버 설정 (Gmail 사용 예)
smtp_server = "smtp.gmail.com"
smtp_port = 587
sender_email = "your_email@gmail.com"
sender_password = "your_password"

# 이메일 전송 함수 정의
def send_email(receiver_email, receiver_name, subject, body):
    # 메일 구성
    msg = MIMEMultipart()
    msg['Subject'] = subject
    msg['From'] = sender_email
    msg['To'] = receiver_email

    # 이메일 본문 추가
    msg.attach(MIMEText(body, 'plain'))

    try:
        # SMTP 서버 연결
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.ehlo()  # 서버와의 연결 확인
        server.starttls()  # TLS 보안 연결
        server.login(sender_email, sender_password)

        # 이메일 전송
        server.sendmail(sender_email, receiver_email, msg.as_string())
        print(f"{receiver_name}님({receiver_email})에게 이메일을 성공적으로 전송했습니다.")

    except Exception as e:
        print(f"이메일 전송 중 오류 발생: {e}")

    finally:
        server.quit()  # 서버 연결 종료

# 사용 예시
receiver_email = "example_receiver@gmail.com"
receiver_name = "홍길동"
subject = "안녕하세요!"
body = f"안녕하세요, {receiver_name}님. Python으로 전송된 이메일입니다."

send_email(receiver_email, receiver_name, subject, body)

코드 상세 설명

  • smtplib.SMTP를 이용해 SMTP 서버와의 연결을 생성합니다.
  • **server.ehlo()**를 통해 서버와의 연결을 확인하고, **server.starttls()**를 통해 TLS로 보안을 설정합니다.
  • **server.login()**을 통해 SMTP 서버에 로그인하여 인증합니다.
  • email.mimeMIMEMultipartMIMEText 클래스를 사용해 이메일의 제목과 본문을 구성합니다.
  • **server.sendmail()**로 이메일을 전송하고, 작업이 끝나면 **server.quit()**를 통해 연결을 종료합니다.

Gmail 보안 설정 유의사항

  • Gmail에서는 계정 보안을 위해 "앱 비밀번호"를 생성해 사용하거나, "보안 수준이 낮은 앱"의 접속을 허용해야 합니다.
  • 중요한 비밀번호는 환경변수 또는 별도의 보안 파일로 관리하는 것을 권장합니다.