🔍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("성공!")