📌 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()