티스토리 뷰
step1. 필요한 라이브러리 불러오기 & 이메일 발송을 위한 로그인 아이디와 비밀번호 입력 input 만들기
import smtplib, email, os
import openpyxl, sys
from io import StringIO
import time
import random
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email import encoders
gid = input('G-Mail 로그인 계정을 입력하세요: ')
gpw = input('G-Mail 로그인 비밀번호를 입력하세요: ')
s_time = time.time()
step2. 메일에 첨부할 텍스트, 이미지 불러오기
txt_files = '파일경로/파일이름.txt'
img_files = '파일경로/파일이름.png'
step3. 엑셀 파일(이메일 보낼 이메일 주소 목록)에서 목록 불러와서 자동으로 메일 보내기
wb = openpyxl.load_workbook('파일경로/엑셀이름.xlsx')
sheet = wb['Sheet1']
member = {}
for i in range(2, sheet.max_row + 1):
name = sheet.cell(row=i, column=1).value
email = sheet.cell(row=i, column=2).value
member[name]=email
smtp_1 = smtplib.SMTP_SSL('smtp.gmail.com',465)
smtp_1.ehlo()
smtp_1.login(gid,gpw)
count = 0
complete_list = []
fail_list = []
for name, email in member.items():
#이메일 멘트 텍스트 파일 불러오기
with open('파일경로/파일이름.txt') as ment:
msgtxt = MIMEText(ment.read() %name)
#txt첨부파일 등록
filename=txt_files
#첨부파일을 사용하기 위한 함수 이용
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(filename, 'rb').read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename=%s' % os.path.basename(filename))
msg = MIMEMultipart()
msg.attach(part)
#image 첨부파일 등록
filename2 = img_files
part2 = MIMEBase('application', 'octet-stream')
part2.set_payload(open(filename2, 'rb').read())
encoders.encode_base(part2)
part2.add_header('Content-Disposition', 'attachment; filename= %s' % os.path.basement(filename2))
#메일 보낼 내용 설정 - 텍스트 첨부파일과 이미지 첨부파일과 메시지 본문 설정과 헤드 설정
msg = MIMEMultipart()
#메일에 메일 내용과 첨부파일 추가
msg.attach(part)
msg.attach(part2)
msg.attach(msgtxt)
msg['Subject'] = Header(s='%s 님께 알려 드립니다.'%name, charset='utf-8')
now = time.localtime()
s = '%04d-%02d-%02d-%02d-%02d-%02d' % (now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec)
sendmailStatus=smtp_1.sendmail('보내는 이메일 주소', email, msg.as_string())
time.sleep(random.randrange(2,6))
print('=' * 60)
print('%s 주소로 메일 발송 시간은 %s 입니다' %(email,s))
print('%s 주소로 메일 발송완료-----'%email)
complete_list.append(email)
count += 1
if sendmailStatus != {}:
print('%s 주소 발송 오류: %s' %(email,sendmailStatus))
step4. 발송 완료 명단 파일에 저장하기
e_time = time.time()
t_time = e_time - s_time
com_list = '파일경로/파일명.txt'
f = open(com_list, 'a', encoding = 'UTF-8')
f.write(str(complete_list))
f.close
print('=' * 60)
print('총 소요시간: %s 초 입니다.' %t_time)
print('총 %s 건 발송 완료했습니다.' %count)
print('발송 완료 명단은 %s에 저장되어 있습니다.' %com_list)
smtp_1.quit()
'파이썬' 카테고리의 다른 글
결측치 처리 (0) | 2023.03.26 |
---|---|
여러가지 통계분석 (0) | 2021.06.13 |
nltk 패키지 / 영문 텍스트 분석하기 / 워드클라우드 (0) | 2021.06.13 |
(MAC OS)matplotlib을 이용한 다양한 그래프 그리기 / bokeh 그래프 그리기 (0) | 2021.06.13 |
(MAC OS) matplotlib를 이용한 그래프 그리기 (0) | 2021.06.13 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 데이터분석
- 코드
- 보안
- 자바
- 파이썬
- 프로그래머스
- sql
- 금리
- 경제
- 그래프
- plot
- 프로그래밍
- 영어회화
- SW
- 영어
- 머신러닝
- 모듈
- python
- 스마트워치
- 함수
- 클래스
- R
- 개발
- 데이터
- 경제신문
- 코테
- mysql
- 코딩
- 코딩테스트
- Programming
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함