🐨CoalaCoding
DocsExamplesTry itBoardB반B반
🐨CoalaCoding

개발자를 위한 한국어 웹 기술 문서

문서

  • JavaScript
  • Web Publishing
  • React
  • Python

커뮤니티

  • 게시판
  • 예제 모음
  • Try it 에디터

기타

  • GitHub
  • 관리자
© 2026 CoalaCoding. All rights reserved.
  • 허깅페이스 무료 Inference API - OTT 앱 활용 가이드
  • 사진수집
  • 네이버 영화 리뷰 크롤링
  • PPT작성
  • 이메일전송
  • 파이썬 챗봇 만들기
  • 주식분석보고서
  1. 홈
  2. 문서
  3. Backend
  4. Python 프로젝트
  5. 이메일전송

이메일전송

코드 블록의 Try it Yourself 버튼으로 직접 실행할 수 있다.

구문

1. 파이썬 가상환경 활성화

.venv\Scripts\activate

2. 발신(send) 이메일 SMTP 설정하기

네이버

[환경설정] 클릭 → [POP3/IMAP 설정] 클릭 → [IMAP/SMTP설정] 클릭 → [사용함] 선택 → [확인] 클릭

  1. 네이버계정에 로그인한다.
  2. 발신용 이메일 계정에 SMTP를 '사용'으로 설정->저장

구글

2.1. 이메일 전송 흐름 이해

2.1.1. 이메일 전송 흐름

이메일 전송 흐름

Note: - 통신 규약(프로토콜)의 정의 컴퓨터끼리 정보를 주고받기 위해 정해둔 약속이다. 이메일 서비스는 SMTP, POP3, IMAP이라는 규약에 따라 작동한다.

  • 동작 원리 우편물을 우체국이 중계하듯, 이메일도 전용 서버가 역할을 분담한다.

  • SMTP 서버 (우편집중국): 메일을 보낼 때 사용한다. 작성된 메일을 받아 수신 측으로 전달한다.

  • POP3 / IMAP 서버 (관할 우체국): 메일을 받을 때 사용한다. 도착한 메일을 보관하고 사용자에게 보여준다.

2.1.2. 이메일 전송 순서

이메일 전송 순서

Note: 1. 발신자의 ID와 비밀번호로 로그인 2. 이메일 작성 3. 보내기 버튼을 눌러 이메일 보내기를 요청. 4. SMTP,POP3, IMAP 프로토콜을 이용하여 각 서버들이 통신을 하고 수신자의 계정에 이메일이 도착하게 된다.

3. 코드작성

  1. 이메일 전송을 위한 smtplib 라이브러리는 파이썬의 표준 라이브러리 이므로 별도의 설치가 필요없다.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

SENDER_EMAIL = "발신자이메일@naver.com"
SENDER_PW    = "이메일비밀번호"
RECEIVER_EMAIL = "수신자이메일@gmail.com"

msg = MIMEMultipart()
msg["From"]    = SENDER_EMAIL
msg["To"]      = RECEIVER_EMAIL
msg["Subject"] = "파이썬으로 보내는 테스트 메일"

body = "안녕하세요!\n파이썬 smtplib로 발송한 이메일입니다."
msg.attach(MIMEText(body, "plain", "utf-8"))

SMTP_SERVER = "smtp.naver.com"
SMTP_PORT   = 465

with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server:
    server.login(SENDER_EMAIL, SENDER_PW)
    server.sendmail(SENDER_EMAIL, RECEIVER_EMAIL, msg.as_string())

print("이메일 전송 완료!")

None: 1: import smtplib — 이메일 발송 기능을 제공하는 라이브러리 2: from email.mime.text import MIMEText — 이메일 본문을 만드는 도구 3: from email.mime.multipart import MIMEMultipart — 제목, 본문, 첨부파일을 한 번에 담는 상자 같은 것 57: 발신자 이메일 주소, 비밀번호, 수신자 이메일 주소 설정 9: MIMEMultipart() — 이메일의 제목·본문·첨부파일을 담을 상자 만들기 1012: 이메일 제목과 발신자, 수신자 정보 입력 1415: 이메일 본문 작성하고 상자에 담기 1718: SMTP 서버 주소와 포트 번호 설정 20~23: SMTP 서버에 접속해서 로그인하고 이메일 전송

3.1. 구글 앱 비밀번호 발급

구글은 보안 정책상 계정 비밀번호 직접 사용이 불가하므로 앱 비밀번호를 별도로 발급해야 한다.

  1. Google 계정 → 보안 → 2단계 인증 활성화
  2. 앱 비밀번호 메뉴 → 앱: 메일, 기기: Windows 컴퓨터 → 생성
  3. 발급된 16자리 비밀번호를 SENDER_PW 에 입력

3.2. 환경변수로 비밀번호 관리

import os
from dotenv import load_dotenv

load_dotenv()

SENDER_EMAIL   = os.getenv("EMAIL_ADDRESS")
SENDER_PW      = os.getenv("EMAIL_PASSWORD")
RECEIVER_EMAIL = os.getenv("RECEIVER_ADDRESS")

None: 1: import os — 운영체제(컴퓨터)의 환경변수에 접근하는 도구 2: from dotenv import load_dotenv — .env 파일을 읽는 도구 4: load_dotenv() — .env 파일에 저장된 정보를 메모리에 불러오기 6~8: .env 파일에서 저장된 이메일 정보를 불러와 변수에 저장

.env 파일 예시 (프로젝트 루트에 생성):

EMAIL_ADDRESS=발신자이메일@naver.com
EMAIL_PASSWORD=이메일비밀번호
RECEIVER_ADDRESS=수신자이메일@gmail.com

None: - EMAIL_ADDRESS — 이메일을 보낼 발신자의 주소

  • EMAIL_PASSWORD — 발신자의 이메일 비밀번호 또는 앱 비밀번호
  • RECEIVER_ADDRESS — 이메일을 받을 수신자의 주소

Warning: .env 파일에는 비밀번호가 들어있으므로 .gitignore에 .env를 반드시 추가하여 GitHub 등 외부에 절대 업로드되지 않도록 한다.

목차

  • 구문