반응형
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 |