파이썬 이메일 자동 발송: 40대 직장인 퇴근 앞당기는 실전 코드

실무 현장에 파이썬 이메일 자동 발송 기술을 완벽하게 세팅하기 전까지, 매주 금요일 오후 4시만 되면 제 마우스 클릭 속도는 비정상적으로 빨라지곤 했습니다.

일주일 동안 취합한 현장 방역 대장과 결산 엑셀 파일을 30곳이 넘는 각 지점 소장님들과 거래처 담당자들에게 개별 메일로 보내야 했기 때문입니다. 수신자 이메일 주소를 복사해서 넣고, “안녕하십니까, 금주 주간 보고서 첨부하여 송부드립니다.”라는 영혼 없는 인사말을 적은 뒤, 바탕화면에서 해당 지점의 엑셀 파일을 찾아 첨부하고 ‘보내기’를 누릅니다.

이 단순한 작업을 30번 반복하다 보면 집중력이 흐려집니다. 그러다 아찔한 실수가 터집니다. A지점 소장님에게 보내야 할 원가 엑셀 파일을 B지점 소장님 메일에 잘못 첨부해서 발송해 버리는 대참사입니다. 발송 취소 버튼을 찾으려 허둥지둥하지만 이미 메일은 태평양을 건너갔습니다. 식은땀을 흘리며 사과 전화를 돌려본 40대 직장인이라면 이 끔찍함을 공감하실 겁니다.

단순 반복 작업에 지치고, 휴먼 에러(사람의 실수)에 가슴 졸이는 지옥에서 벗어나기 위해 저는 파이썬에게 내 지메일(Gmail) 계정을 쥐여주기로 결심했습니다.

40대 실무자가 정착한 파이썬 이메일 자동 발송 뼈대 코드

파이썬으로 메일을 보내는 방법은 여러 가지가 있지만, 저는 별도의 외부 라이브러리 설치 없이 파이썬 내장 모듈만으로 작동하는 가장 안정적인 표준 방식을 사용합니다.

아래 코드는 제목, 본문 내용, 그리고 엑셀 첨부파일까지 완벽하게 세팅하여 자동으로 메일을 쏘아 올려주는 실무용 기본 뼈대입니다.

Python

import smtplib
from email.message import EmailMessage

# 1. 이메일 발송을 위한 기본 설정 (구글 지메일 기준)
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 465 # 보안 연결 포트

# 본인의 지메일 주소와 '앱 비밀번호' (기존 로그인 비밀번호 아님!)
my_email = 'your_email@gmail.com'
my_password = 'abcd efgh ijkl mnop' # 16자리 구글 앱 비밀번호

# 2. 메일 내용물(제목, 본문, 수신자) 꾹꾹 눌러 담기
msg = EmailMessage()
msg['Subject'] = "[공지] 10월 3주차 현장 결산 대장 송부의 건"
msg['From'] = my_email
msg['To'] = 'target_email@naver.com' # 받을 사람의 주소
msg.set_content("""
안녕하십니까, 소장님.
금주 현장 결산 엑셀 파일을 첨부하여 보내드립니다.
업무에 참고 부탁드리며, 환절기 건강 유의하시기 바랍니다.

감사합니다.
""")

# 3. 바탕화면에 있는 엑셀 파일 첨부하기
file_path = r"C:\Users\Admin\Desktop\결산대장.xlsx"

try:
    with open(file_path, 'rb') as f:
        file_data = f.read()
    
    # 엑셀 파일 확장자에 맞게 세팅하여 첨부
    msg.add_attachment(file_data, maintype='application', subtype='vnd.openxmlformats-officedocument.spreadsheetml.sheet', filename='결산대장.xlsx')
except FileNotFoundError:
    print("첨부할 엑셀 파일을 찾을 수 없습니다. 경로를 확인해주세요.")

# 4. 준비된 메일을 서버를 통해 발송하기
try:
    # SMTP 서버에 연결하고 로그인하여 메일 쏘기
    with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server:
        server.login(my_email, my_password)
        server.send_message(msg)
    print("성공적으로 이메일이 발송되었습니다! 칼퇴근하십시오.")
except Exception as e:
    print(f"메일 발송 중 에러가 발생했습니다: {e}")

이 파이썬 이메일 자동 발송 코드를 응용하여 엑셀의 이메일 주소 목록을 for 반복문으로 감싸주면, 커피 한 모금을 마시는 30초 동안 50명의 담당자에게 각자의 엑셀 파일이 완벽하게 개별 발송되는 기적을 볼 수 있습니다.

대체 텍스트: 파이썬 이메일 자동 발송 코드로 엑셀 첨부 파일이 전송 완료된 결과 화면

99%가 막히는 치명적 에러: 구글 ‘앱 비밀번호’의 비밀

실무에서 파이썬 이메일 자동 발송을 처음 세팅할 때, 코드 오타가 없는데도 새빨간 SMTPAuthenticationError 에러가 터지며 발송이 실패하는 분들이 있습니다.

이것은 파이썬의 잘못이 아닙니다. 최근 구글(Gmail)의 보안이 몹시 강력해져서, 우리가 평소에 스마트폰이나 웹에서 로그인할 때 쓰는 ‘진짜 비밀번호’를 파이썬 코드 안에 적어두면 구글이 해킹으로 간주하고 즉각 차단해 버리기 때문입니다.

파이썬 이메일 자동 발송 에러 해결을 위한 구글 앱 비밀번호 발급 화면
대체 텍스트: 파이썬 이메일 자동 발송 에러 해결을 위한 구글 앱 비밀번호 발급 화면

이 장벽을 뚫기 위해서는 구글 계정 설정에서 ‘앱 비밀번호’라는 16자리 임시 비밀번호를 발급받아 코드에 넣어야 합니다. 구글 계정 관리로 들어가 ‘보안’ 탭에서 ‘2단계 인증’을 활성화한 뒤, 맨 밑에 있는 ‘앱 비밀번호’ 메뉴에서 ‘기타(맞춤 이름)’로 생성하시면 영어 소문자 16자리가 발급됩니다. 자세한 발급 절차는 [구글 공식 앱 비밀번호 로그인 고객센터] 문서를 참고하시면 사진과 함께 쉽게 따라 하실 수 있습니다.

글을 맺으며: 100% 무인 업무 공장의 마지막 퍼즐

우리가 지금까지 다루었던 실무 자동화 기술들을 머릿속으로 이어보십시오. 웹 크롤링으로 경쟁사 데이터를 긁어오고, 판다스(Pandas)를 이용해 엑셀로 취합 및 필터링을 한 뒤, 오늘 배운 이메일 자동 발송 코드로 팀원들에게 결과를 공유합니다.

그리고 이 모든 일련의 과정을 윈도우의 ‘작업 스케줄러’에 등록해 둔다면? 여러분이 아침 8시 반에 출근길 운전대를 잡고 있는 동안, 사무실의 컴퓨터는 스스로 깨어나 이 모든 작업을 무인으로 끝마친 뒤 여러분의 스마트폰으로 ‘보고 완료’ 메일을 띄울 것입니다. 만약 윈도우 예약 실행법이 기억나지 않으신다면, 예전에 제가 상세히 풀어두었던 [파이썬 작업 스케줄러로 100% 무인 자동화 완성] 편을 다시 한번 복습해 보시기를 강력히 추천합니다.

나이가 들어서 코딩을 배우는 것은 천재 해커가 되기 위함이 아닙니다. 나의 소중한 워라밸을 갉아먹는 의미 없는 마우스 클릭을 멈추고, 진짜 사람이 해야 할 ‘판단’과 ‘소통’에 에너지를 쏟기 위함입니다.

오늘도 산더미 같은 서류와 씨름하며 야근하고 계신 40대 대한민국 직장인 여러분, 내일은 파이썬과 함께 10분 일찍 퇴근하시기를 응원합니다!

답글 남기기

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