본문으로 건너뛰기
실습하기

파이썬으로 매출 보고서를 분석하고 이메일로 발송하기

이전 수업에서 불러온 고객별 매출 데이터를 분석한 후, 해당 데이터를 기반으로 맞춤형 보고서를 만들어 이메일을 발송하는 프로그램을 구현해 겠습니다.


SMPT 연결 구성하기

먼저 이메일 전송을 위한 SMTP 서버포트, 그리고 이메일 주소비밀번호를 설정합니다.

이메일 전송 설정
# SMTP 서버 설정
smtp_server = "smtp.gmail.com"
smtp_port = 587
sender_email = "your_email@gmail.com"
password = "your_email_password"

# SMTP 서버에 연결
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # TLS(Transport Layer Security) 암호화 시작
server.login(sender_email, password)
  1. smtplib.SMTP(): SMTP 서버와 포트를 설정합니다. 코드 예시에서는 임의로 Gmail을 사용했지만, 사용하는 이메일 제공자의 설정에 따라 값이 다를 수 있습니다.

  2. starttls(): 서버와의 통신을 암호화합니다.

  3. login(): 이메일 계정으로 로그인합니다.


이메일 본문 작성하기

이제 고객별로 맞춤형 매출 보고서를 텍스트로 구성한 후, 이메일 본문으로 사용할 수 있도록 합니다.

이전에 작성했던 매출 데이터를 활용해 고객별로 이메일을 구성합니다.

이메일 본문 작성
def create_email_body(customer_name, monthly_sales):
body = f"안녕하세요, {customer_name}님!\n\n"
body += "다음은 귀하의 최근 3개월간 매출 요약입니다:\n\n"

for _, row in monthly_sales.iterrows():
body += f"{row['년월']}월 매출: {row['매출 금액']}원\n"
body += "\n감사합니다.\n"

return body

이 함수는 고객의 이름과 매출 데이터를 받아 이메일 본문을 만듭니다.

iterrows()를 사용해 각 고객의 월별 매출 데이터를 반복하며 본문을 작성합니다.


이메일 발송하기

이제 본문을 작성했으니, 각 고객에게 맞춤형 이메일을 발송하는 방법을 알아보겠습니다.

MIMEText를 이용해 이메일 메시지를 생성하고, SMTP 서버를 통해 발송합니다.

이메일 발송
from email.mime.text import MIMEText

# 고객별로 이메일 발송
for customer_id, group in monthly_sales.groupby('고객 ID'):
customer_name = group['고객 이름'].iloc[0]
recipient_email = "customer_email@example.com" # 고객 이메일 주소
email_body = create_email_body(customer_name, group)

# 이메일 메시지 생성
msg = MIMEText(email_body)
msg['Subject'] = f"{customer_name}님의 월간 매출 보고서"
msg['From'] = sender_email
msg['To'] = recipient_email

# 이메일 발송
server.sendmail(sender_email, recipient_email, msg.as_string())
print(f"{customer_name}님에게 이메일 발송 완료!")
  1. MIMEText(): 이메일의 본문을 생성합니다. 이때 본문은 create_email_body() 함수에서 만든 맞춤형 텍스트를 사용합니다.

  2. sendmail(): 작성한 이메일을 고객에게 전송합니다.

  3. msg['Subject']: 이메일 제목을 설정합니다.

이 코드를 통해 각 고객에게 맞춤형 매출 보고서를 이메일로 자동 발송할 수 있습니다.


마무리 작업

이제 모든 이메일을 발송했으니, 서버와의 연결을 종료하는 작업이 필요합니다.

SMTP 서버 종료
# SMTP 서버 연결 종료
server.quit()

quit()를 호출하여 SMTP 서버와의 연결을 종료합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!