Python_42_ SMTP(메일 보내기)

hyeong taek jo·2023년 9월 18일

Python

목록 보기
46/53

📌 SMTP: 메일 자동으로 보내기

📌 일반적으로 보내는법

# Mail Message사용 객체 선언
from email.message import EmailMessage
import smtplib

# SSL로 Open(SMTP 객체 생성)
smtp = smtplib.SMTP_SSL('smtp.gmail.com', 465)
# smtp 정상여부 Hello Test
smtp.ehlo()

# smtp Login  # smtp 로그인은 무조건 구글로 해야한다. 패스워드는 구글 2단계 인증 패스워드임
smtp.login('diajd169@gmail.com','mgfx qozb mjly zbou')

# Message 생성
msg = EmailMessage()

# 내부적으로 dic으로 선언
msg['Subject'] = '파이썬 Mail Test'
msg['From'] = 'diajd169@gmail.com'
msg['to'] = 'jht5627@naver.com'
msg.set_content('''kkk 본문 전송 내용 , \n
                 MultiLine 가능
                 파이썬 입니다
                  ''''')
# Mail 전송
smtp.send_message(msg)
# 연결 종료
smtp.quit()

📌 엑셀파일로 보내는법

# 파티 참가 대상  User(invite.xlsx)들에게 자동으로 Mail 보내기
from email.message import EmailMessage
import smtplib
import openpyxl

def check_party_members():
    # Excel Open
    # C:\python\sources\basic03
    wb = openpyxl.load_workbook("C:\\python\\sources\\basic03\\ch27\\invite.xlsx")
    #sheet = wb.get_sheet_by_name('Sheet1')
    sheet = wb['Sheet1'] #엑셀의 시트명이다 
    party_members={}

    # 2 Row 부터 Max_row까지 진행
    for r in range(2, sheet.max_row + 1):
        payment = sheet.cell(row=r, column=sheet.max_column).value
        if payment == 'invite':
            name = sheet.cell(row=r, column=1).value
            email = sheet.cell(row=r, column=2).value
            party_members[name] = email
    return party_members


def main():
    #파티 참가 명단 확보
    party_members = check_party_members()
    print('main party members {}....'.format(party_members))

    # SSL로 Open(SMTP 객체 생성)
    smtp = smtplib.SMTP('smtp.gmail.com', 587)
    # smtp 정상여부 Hello Test
    smtp.ehlo()

    smtp.starttls()

    # smtp Login  # smtp 로그인은 무조건 구글로 해야한다. 패스워드는 구글 2단계 인증 패스워드임
    smtp.login('diajd169@gmail.com','mgfx qozb mjly zbou')

    # 파티 참가 대상 회원에게 mail보냄
    for name , email in party_members.items():
        # Message 생성
        msg = EmailMessage()

        # 내부적으로 dic으로 선언
        msg['Subject'] = '회식 파티 초대장(파이썬)'
        msg['From'] = 'diajd169@gmail.com'
        msg['to'] = email
        msg.set_content('''안녕하세요 {}회원님,
                                2023년 10월 저녁 파티에 참석 요청합니다
                                빠른 시간 내에 회신 부탁드려요                        
                                '''.format(name))

        # Mail 전송
        print('Sending Mail to {}....'.format(email))
        sendmail_status = smtp.send_message(msg)

        if sendmail_status != {}:
            print('{}에게 메일 전송이 실패하였습니다.{}....'.format(email,sendmail_status))
        else:
            print('{}에게 메일 전송이 성공하였습니다 {}...'.format(email, sendmail_status))

    smtp.quit()

if __name__ == '__main__':
    main()
profile
마포구 주민

0개의 댓글