본문 바로가기
프로젝트/SRT&KTX 매진표 예매

SRT&KTX 기차표 매크로 예매 - (13) 예매시 이메일 보내기(smtplib, email)

by 매크로메이커 2024. 1. 17.

이제 이메일을 보내보자.

 

모든 이메일 서버를 지원하기에는 공수가 많이 들어가니 가장 많이 사용하는 gmail로 발신 서버를 제한한다.

 

python에서 gmail을 보내려면 사전 세팅이 좀 필요한데, 아래 블로그를 참고하여 준비하자.

 

 

Python으로 Gmail 보내기

나름의 이유로 시스템에서 메일을 보내야할 일이 있는데, 이왕이면 Gmail을 이용해보고 싶어서 살펴보기로 했다. 일단 Gmail을 통해 이메일을 보내기 위해서 미리 셋팅을 해줘야 할 것이 있다. Gmail

www.whatwant.com

 

콜백 함수까지 포함해서 코드를 완성하면 아래와 같다.

 

 

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


class Email:
    def __init__(self, sender, passwd, receiver, error_callback, try_callback):
        self.error_callback = error_callback
        self.try_callback = try_callback
        self.gmail_smtp = "smtp.gmail.com"  # gmail smtp 주소
        self.gmail_port = 465  # gmail smtp 포트번호. 고정(변경 불가)

        # 로그인
        self.my_account = sender
        self.my_password = passwd
        self.receiver = receiver

    def send_email(self, msg):
        try:
            smtp = smtplib.SMTP_SSL(self.gmail_smtp, self.gmail_port)
            smtp.login(self.my_account, self.my_password)
        
            # 메일 기본 정보 설정
            message = MIMEMultipart("alternative")
            message["Subject"] = '기차표 예매 프로그램 알림 이메일'
            message["From"] = self.my_account
            message["To"] = self.receiver
        
            message.attach(MIMEText(msg, "plain"))
        
            smtp.sendmail(self.my_account, self.receiver, message.as_string())
        
            # smtp 서버 연결 해제
            smtp.quit()
            
            self.try_callback(msg)
            return True
        except Exception as e:
            self.error_callback('이메일 발송 실패', f"{msg} \n발송에 실패했습니다 - \n{e}")
            return False

[참고 사이트]

 

Python으로 Gmail 보내기

나름의 이유로 시스템에서 메일을 보내야할 일이 있는데, 이왕이면 Gmail을 이용해보고 싶어서 살펴보기로 했다. 일단 Gmail을 통해 이메일을 보내기 위해서 미리 셋팅을 해줘야 할 것이 있다. Gmail

www.whatwant.com

 

테스트 결과 이메일이 잘 도착한다 :)

 

이메일 테스트 결과