Guidelines

파이썬으둜 맀좜 λ³΄κ³ μ„œλ₯Ό λΆ„μ„ν•˜κ³  μ΄λ©”μΌλ‘œ λ°œμ†‘ν•˜κΈ°

이번 μˆ˜μ—…μ—μ„œλŠ” 이전 μˆ˜μ—…μ—μ„œ μ •μ˜ν•œ 고객별 맀좜 데이터 λ°μ΄ν„°ν”„λ ˆμž„μ„ λΆ„μ„ν•œ ν›„, ν•΄λ‹Ή 데이터λ₯Ό 기반으둜 λ§žμΆ€ν˜• λ³΄κ³ μ„œλ₯Ό λ§Œλ“€μ–΄ 이메일을 λ°œμ†‘ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ΅¬ν˜„ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.


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'] : 이메일 제λͺ©μ„ μ„€μ •ν•©λ‹ˆλ‹€.

이 μ½”λ“œλ₯Ό 톡해 각 κ³ κ°μ—κ²Œ λ§žμΆ€ν˜• 맀좜 λ³΄κ³ μ„œλ₯Ό μ΄λ©”μΌλ‘œ μžλ™ λ°œμ†‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


마무리 μž‘μ—…

이제 λͺ¨λ“  이메일을 λ°œμ†‘ν–ˆμœΌλ‹ˆ, μ„œλ²„μ™€μ˜ 연결을 μ’…λ£Œν•˜λŠ” μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

μ•„λž˜μ™€ 같이 quit()λ₯Ό ν˜ΈμΆœν•˜μ—¬ SMTP μ„œλ²„μ™€μ˜ 연결을 μ’…λ£Œν•©λ‹ˆλ‹€.

SMTP μ„œλ²„ μ’…λ£Œ
# SMTP μ„œλ²„ μ—°κ²° μ’…λ£Œ server.quit()

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result

Input/Result

Output

The document is empty.

Try running the code.