40대 비전공자 직장인의 파이썬 독학기 10편: 파이썬 이메일 자동 발송으로 엑셀 파일 1초 만에 보내기

지난 9편에서는 수천 줄의 점검 대장에서 우리가 원하는 현장 데이터만 쏙쏙 뽑아내는 법을 알아봤습니다. 그리고 이번 10편에서는 대망의 파이썬 이메일 자동 발송 기능을 활용하여, 이렇게 추출한 엑셀 파일을 1초 만에 담당자에게 쏘아 보내는 완벽한 무인 자동화를 완성해 보겠습니다.

생각해 보면 데이터 추출까지만 해놓고 멈춘다면 그건 반쪽짜리 자동화에 불과합니다. 우리가 엑셀을 만지는 궁극적인 이유는 결국 ‘누군가에게 보고하기 위해서’니까요. 힘들게 뽑아낸 긴급 현장 명단을 현장 소장님들이나 거래처 담당자에게 전달해야 비로소 진짜 업무가 끝납니다. 예전의 저였다면 파이썬으로 기껏 엑셀을 만들어 놓고도, 다시 인터넷 창을 열어 지메일(Gmail)에 로그인하고 ‘파일 첨부’를 누르는 수작업을 반복했을 겁니다.

하지만 오늘 10편에서는 이 귀찮은 마무리 과정까지 파이썬에게 통째로 넘겨버리겠습니다. 방금 막 만들어진 따끈따끈한 엑셀 파일을 쥐어주고, 수신자에게 단 1초 만에 발송해 버리는 진짜 ‘무인 자동화’의 세계로 여러분을 안내합니다.

파이썬 이메일 자동 발송 코드가 실행되어 엑셀 첨부 파일이 담당자에게 도착한 모습
대체 텍스트: 파이썬 이메일 자동 발송 코드가 실행되어 엑셀 첨부 파일이 담당자에게 도착한 모습

1. 사전 준비: 지메일(Gmail) ‘앱 비밀번호’ 발급받기 (매우 중요)

파이썬 이메일 자동 발송 코드를 짜기 전에 초보자들이 100% 걸려 넘어지는 함정이 하나 있습니다. 바로 구글의 강력한 보안 시스템입니다.

파이썬 코드 안에 우리가 평소에 쓰는 구글 로그인 비밀번호를 그대로 적어 넣으면, 구글은 “어? 수상한 프로그램이 해킹하려고 하네?”라며 접속을 칼같이 차단해 버립니다. 따라서 우리는 파이썬 전용 통행증인 ‘앱 비밀번호’를 따로 발급받아야 합니다.

[앱 비밀번호 1분 발급 순서]

  1. 구글 계정 관리에 로그인합니다.
  2. 왼쪽 메뉴에서 [보안]을 클릭하고, [2단계 인증]이 켜져 있는지 확인합니다. (안 켜져 있다면 켜주세요.)
  3. 검색창에 ‘앱 비밀번호’를 검색하여 들어갑니다.
  4. 앱 이름을 ‘파이썬 메일 발송’ 등으로 대충 적고 [만들기]를 누릅니다.
  5. 화면에 나타난 16자리 영문 알파벳이 바로 우리의 통행증입니다. 이 창을 닫기 전에 메모장에 꼭 복사해 두세요!

2. 파이썬 이메일 자동 발송의 원리 (SMTP)

메일을 보낼 때 우리는 우체국 역할을 하는 서버를 거쳐야 합니다. 이를 IT 용어로 SMTP(Simple Mail Transfer Protocol)라고 부릅니다. 다행히 파이썬에는 우체국에 접속하고 편지를 쓰는 기능(smtplib, email 라이브러리)이 기본으로 내장되어 있어서, 따로 설치할 필요 없이 바로 코드를 짜면 됩니다.

오늘 우리가 파이썬에게 시킬 심부름의 순서는 다음과 같습니다.

  1. 구글 우체국(SMTP 서버)에 똑똑 문을 두드리고 로그인한다.
  2. 편지봉투(제목, 보내는 사람, 받는 사람)를 쓴다.
  3. 편지 내용(본문)을 적는다.
  4. 지난 시간에 만든 ‘긴급방역_오늘출동.xlsx’ 파일을 동봉(첨부)한다.
  5. 발송 버튼을 누른다!
파이썬 이메일 자동 발송을 위해 smtplib와 email 라이브러리를 임포트한 실무 코드 작성 화면
대체 텍스트: 파이썬 이메일 자동 발송을 위해 smtplib와 email 라이브러리를 임포트한 실무 코드 작성 화면

3. 실전 코드: 엑셀 파일 첨부해서 메일 쏘기

자, 이제 메모장에 적어둔 16자리 앱 비밀번호를 준비하시고 아래 코드를 천천히 살펴보세요. 실무에 당장 쓸 수 있는 완벽한 템플릿입니다.

Python

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

# 1. 내 계정 정보 세팅
my_email = "본인의지메일주소@gmail.com"
# 아까 발급받은 16자리 앱 비밀번호 (띄어쓰기 없이 붙여서 입력)
my_password = "abcdefghijklmnop" 
receiver_email = "받는사람주소@naver.com"

# 2. 편지봉투 및 본문 쓰기
msg = MIMEMultipart()
msg["Subject"] = "🚨 [긴급] 금일 방역 출동 현장 명단 (자동발송)"
msg["From"] = my_email
msg["To"] = receiver_email

content = """
현장 소장님, 안녕하십니까.
금일(오늘) 긴급하게 출동해야 할 방역 현장 리스트를 엑셀로 첨부해 드립니다.
파일 확인 부탁드리며, 특이사항 발생 시 연락 바랍니다.

* 본 메일은 파이썬에 의해 자동 발송되었습니다.
"""
# 본문을 편지봉투에 쏙 넣기
msg.attach(MIMEText(content, "plain"))

# 3. 엑셀 파일 첨부하기 (9편에서 만든 파일 경로 입력)
file_path = r"C:\Users\Admin\Desktop\긴급방역_오늘출동.xlsx"
with open(file_path, "rb") as f:
    attachment = MIMEApplication(f.read(), _subtype="xlsx")
    # 메일에 표시될 파일 이름 지정
    attachment.add_header('Content-Disposition', 'attachment', filename="오늘의긴급현장.xlsx")
    msg.attach(attachment)

# 4. 구글 우체국(SMTP) 연결하고 메일 발송하기
print("메일 발송을 준비 중입니다...")
# 구글 SMTP 서버 접속 (포트번호 587)
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls() # 보안 연결 시작
server.login(my_email, my_password) # 로그인
server.send_message(msg) # 발송!
server.quit() # 우체국 문 닫고 나오기

print("메일이 성공적으로 발송되었습니다! 칼퇴합시다!")

위 코드를 실행하는 순간, 터미널 창에 “메일이 성공적으로 발송되었습니다!”라는 문구가 뜨며, 받는 사람의 메일함에는 여러분이 정성껏(사실은 파이썬이 1초 만에) 쓴 텍스트와 엑셀 파일이 완벽하게 도착해 있을 것입니다.

4. 글을 마치며: 40대 아저씨의 아침이 바뀌다

여러분, 우리가 1편부터 10편까지 달려오며 무엇을 만들어냈는지 되돌아보십시오.

여러 개의 엑셀 파일을 하나로 합치고(7편), 빈칸 에러를 고치고(8편), 원하는 조건만 필터링해서 뽑아낸 뒤(9편), 오늘 배운 파이썬 이메일 자동 발송(10편) 기술로 담당자에게 전송하기까지. 이 모든 과정을 하나의 파이썬 파일(.py)로 주욱 이어 붙이면 어떻게 될까요?

아침에 출근해서 커피 한 잔 타는 동안, 파이썬 실행 버튼 딱 하나만 누르면 이 모든 업무가 ‘0.1초’ 만에 끝나게 됩니다. 비전공자인 40대 방역업 사장도 해냈으니, 대한민국 직장인이라면 누구나 할 수 있습니다.

다음 11편에서는 이렇게 기가 막히게 짜놓은 파이썬 코드를, 내가 직접 마우스로 클릭하지 않아도 매일 아침 9시 정각에 컴퓨터가 알아서 스스로 실행하게 만드는 ‘윈도우 작업 스케줄러(Task Scheduler)’ 등록 방법을 알아보겠습니다. 진정한 ‘손 하나 까딱 안 하는 무인화’의 세계로 초대합니다!

(이전 글: [40대 비전공자 직장인의 파이썬 독학기 9편: 파이썬 엑셀 필터링 조건 데이터 추출] 보러 가기)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다