🔍QA & TEST/🧑🏻💻Python
이메일 발송 기능
siwoobyeol
2024. 8. 24. 09:30
1. 구글에서 앱 비밀번호 생성을 해야 한다. (2단계 인증쪽 or 검색)
2. smtp 사용해야한다.
3. 이메일 발송 기본 코드는 아래와 같다.
1) 수신인 한 명일 때
from smtplib import SMTP_SSL
from email.message import EmailMessage
# 이메일 메시지 설정
msg = EmailMessage()
msg['Subject'] = '업무자동화 종합반 테스트'
msg['From'] = '본인 이메일'
msg['To'] = '대상 이메일'
msg.set_content('This is a test email.')
# SMTP 설정 및 이메일 전송
with SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('본인 이메일', '앱 비밀번호')
smtp.send_message(msg)
print("성공!")
2) 수신인 2명 이상 동일한 메일 전송 시
# 이메일 발송
from smtplib import SMTP_SSL
from email.message import EmailMessage
customer_list = [
'대상 이메일',
'대상 이메일',
'대상 이메일',
]
# 이메일 메시지 설정
for customer in customer_list:
msg = EmailMessage()
msg['Subject'] = '업무자동화 메일 발송 테스트'
msg['From'] = '본인 이메일'
msg['To'] = customer
msg.set_content('This is a test email.')
# SMTP 설정 및 이메일 전송
with SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('본인 이메일', '앱 비밀번호')
smtp.send_message(msg)
print("성공!")
3) Excel에 기입된 이메일 주소에 메일 전송 시
# 엑셀 파일에 이메일 주소를 가져와서 이메일 보내기
from smtplib import SMTP_SSL
from email.message import EmailMessage
from openpyxl import load_workbook
# 엑셀 파일 불러오기
wb = load_workbook('./Python_SpartaCodingClub/excel_openpyxl/email.xlsx', data_only=True)
ws = wb['member1']
# 엑셀 파일에 작성된 나이에 따라 다른 메시지 보내기
def greeting_message(age):
if age < 20:
return "안녕? 이메일 엑셀 자동 보내기야"
elif 20 <= age < 40:
return "안녕하세요! 이메일 엑셀 자동 보내기입니다."
else:
return "안녕하세요. 무탈하신지요 \n 이메일 엑셀 자동 보내기입니다."
for row in ws.iter_rows(min_row=2):
recipient = row[0].value # 메일 받는 사람: 엑셀 A열(1번째)
if recipient is None: # 값이 없으면
continue # 무시
title = row[1].value
if title is None:
continue
age = row[2].value
if age is None:
continue
content = greeting_message(age)
msg = EmailMessage()
msg["From"] = "cosmicsiwoo@gmail.com"
msg["To"] = recipient
msg["Subject"] = title
msg.set_content(content)
# SMTP 설정 및 이메일 전송
with SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('본인 이메일', '앱 비밀번호')
smtp.send_message(msg)
print("성공!")