프로젝트/SRT&KTX 매진표 예매

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

매크로메이커 2024. 1. 17. 01:28

이제 이메일을 보내보자.

 

모든 이메일 서버를 지원하기에는 공수가 많이 들어가니 가장 많이 사용하는 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

 

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

 

이메일 테스트 결과