본문 바로가기

개발이야기

파이썬 코드 샘플 - 대량메일 발송 하기

반응형

CSV 에  발송한 메일주소와  컨텐츠에 들어갈 내용을 미리 편집한후  파이썬 코드 실행 
회사 동료분이 만들어주셨던 건데 살짝 수정해서 유용하게 사용했습니다. ;;

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Created by josh.z on 2021/02/22.
import csv
import logging
import smtplib
import sys
import time
from datetime import datetime
from email.mime.text import MIMEText
from email.header import Header

######### 수정필요  ##########################################
SENDER = '보내는사람 이메일 주소'
TITLE = '매일 제목'
SMTP_HOST = 'smtp host'
SMTP_PORT = 25

CSV_FILE_NAME = 'test_data.csv'

    ### 헤더 칼럼명을 메일 컨텐츠에서 매핑 
DATA_HEADER = ["email","name","stock","amount"]

############################################################


CSV_DATA = []

def sendSmtpMail(sender, receivers, title, body):
    msg = MIMEText(body, 'html', 'utf-8')
    msg['Subject'] = Header(title, "utf8")
    msg['From'] = sender

    # set mail config
    host = SMTP_HOST
    port = SMTP_PORT
    smtp = smtplib.SMTP(host, port)
    smtp.set_debuglevel(1)
    smtp.sendmail(sender, receivers, msg.as_string())
    smtp.quit()


def getDataWithCvs():
    f = open( CSV_FILE_NAME, 'r', encoding='utf-8')
    rdr = csv.reader(f)
    startDay = ''
    for line in rdr:
        line_data = {}
        i = 0
        for dHeader in DATA_HEADER:            
            line_data[dHeader]= line[i]
            i = i +1
        csv_data.append(line_data)
    f.close()


def send():
    for line_data in CSV_DATA:
                body = f'''
    <h2>안녕하세요. {line_data["name"]}님 </h2><br><br>
    <pre>

    행사 내역을 확인해주세요. 

    행사수량 :  {line_data["stock"]}
    입금할금액:  {line_data["amount"]}

    신청한 수량과 금액을 확인하시고 이상이 있으시면 연락 주세요.
    </pre>
    
    감사합니다.'''
                sendSmtpMail(SENDER, line_data["email"], TITLE, body)
                sent_list = ','.join(line_data.values())
                print(f'보낸메시지:{sent_list}')
                time.sleep(1)


if __name__ == "__main__":
    getDataWithCvs()

    #print(WR_MEMBER_DATA)

    send()
반응형

'개발이야기' 카테고리의 다른 글

자주쓰는 git 명령어 목록  (0) 2023.02.05
JPA batchSize 설정 해도 N+1 쿼리가 발생 해요  (0) 2023.02.05
파이썬 코드 샘플  (0) 2021.11.29
정규식은 항상 헷갈림  (0) 2021.02.15
테스트 컨테이너 ~ 굿 !  (0) 2021.01.20