# LAB-08 메일링 리스트 / 데이터 베이스 연동
<학습 내용>
- 메일 발송 모듈 제작
- 메일링 리스트 구현
- 비동기 처리
- 비동기 리턴/ 예외 처리
- 데이터 입력/수정/삭제
### 메일 발생 모듈 제작
# -> 경로 정보를 취득하기 위한 모듈
import os
# -> 발송서버와 연동하기 위한 모듈
from smtplib import SMTP
# -> 본문 구성 기능
from email.mime.text import MIMEText
# -> 파일을 Multipart 형식으로 변환
from email.mime.application import MIMEApplication
# -> 파일을 본문에 추가하는 기능 제공
from email.mime.multipart import MIMEMultipart
def sendMail(from_addr, to_addr, subject, content, files=[]):
# 컨텐츠 형식 (plain or html)
content_type ='plain'
# 로그인 계정 이름 (네이버=아이디, 구글=메일주소)
username = "bohee####@gmail.com"
# 비밀번호 (네이버=개인비밀번호,애플리케이션 비밀번호, 구글=앱 비밀번호
password ="######"
# 구글 발송 서버 주소와 포트 (고정값)
smtp ="smtp.gmail.com"
port = 587
# 메일 발송 정보를 저장하기 위한 객체
msg = MIMEMultipart()
msg['Subject'] =subject # 메일 제목
msg['From'] =from_addr # 보내는 사람
msg['To'] =to_addr # 받는 사람
# 본문 설정 -> 메일의 내용과 형식 지정
msg.attach(MIMEText(content,content_type))
# 리스트 변수의 원소가 하나라도 존재할 경우 True
if files:
for file_item in files:
if os.path.exists(file_item):
# 바이너리(b) 형식으로 읽기(r)
with open(file_item,'rb') as f:
# 전체 경로에서 파일의 이름만 추출
basename =os.path.basename(file_item)
# 파일의 내용과 파일이름을 메일에 첨부할 형식으로 변환
part =MIMEApplication(f.read(),Name = basename)
# 파일첨부
part['Contenr-Dispositin'] = 'attachment; filename="%s"' %basename
msg.attach(part)
print(basename,"(이)가 첨부되었습니다")
mail = SMTP (smtp)
#메일 서버 접속
mail.ehlo()
#메일 서버 연동 설정
mail.starttls()
#메일 서버 로그인
mail.login(username,password)
#메일 보내기
mail.sendmail(from_addr,to_addr,msg.as_string())
#메일 서버 접속 종료
mail.quit()
if __name__ == "__main__":
sendMail ("bohee####@gmail.com","bohee####@gmail.com","메일 발생 모듈 테스트","test 입니다" ,files =["hello.txt"])
'빅데이터 국비 교육' 카테고리의 다른 글
| [아이티윌 빅데이터 52기] LAB 09 | Python Basic | 데이터 베이스 프로그래밍 (0) | 2025.10.30 |
|---|---|
| [아이티윌 빅데이터 52기] Day 13 Python Basic | 모듈과 라이브러리 / 파이썬 내장 라이브러리 (0) | 2025.10.29 |
| [아이티윌 빅데이터 52기] Day 12 Python Basic | 객체지향 프로그래밍의 이해 (0) | 2025.10.22 |
| [아이티윌 빅데이터 52기] Day 11 Python Basic | 딕셔너리/예외처리/파일 입출력 (0) | 2025.10.21 |
| [아이티윌 빅데이터 52기] Day 10 Python Basic | 리스트의 탐색 (0) | 2025.10.20 |