공부한 내용 정리하는 공간입니다.
틀린 내용이 있을 수 있습니다.
모든 지적, 첨언 환영합니다.
오늘의 코드
1. 이메일 송신 정보 설정하기
2. 이메일 메세지 작성하기
3. 이메일 전송하기
import smtplib
from email.mime.text import MIMEText
send_email = "메일@주소"
send_pwd = "메일 비밀번호"
recv_email = "메일@주소"
smtp_name = "smtp.naver.com"
smtp_port = 587
text = "이메일 보내기 테스트입니다"
msg = MIMEText(text, 'plain', 'utf-8')
msg['Subject'] = "테스트"
msg['From'] = send_email
msg['To'] = recv_email
email_string = msg.as_string()
print(email_string)
s = smtplib.SMTP(smtp_name, smtp_port)
s.starttls()
s.login(send_email, send_pwd)
s.sendmail(send_email, recv_email, email_string)
s.quit()
MIMEText()
텍스트 형식의 이메일 본문을 생성
MIMEText(이메일 본문에 들어갈 텍스트, '메세지 유형', '인코딩') 형식으로 사용
메세지 유형 : plain - 일반 텍스트 이메일 / html - HTML 메세지
.['Subject'] / .['from'] / .['To']
이메일의 제목 / 발신자 / 수신자를 설정
이메일 메세지의 헤더를 설정하는 속성
이메일을 보내는 데 필수적인 부분
.as_string()
이메일 메세지를 문자열 형식으로 변환하는 메서드
이메일은 MIME 객체로 작성되기 때문에 전송을 위해서는 문자열로 변환 필요
문자열에는 이메일의 본문, 제목, 발신자, 수신자 정보가 포함됨
smtplib.SMTP()
SMTP 서버와의 연결을 관리하는데 사용
smtplib.SMTP(서버 주소, 포트 번호) 형태로 사용
.starttls()
보안 암호화(TLS)를 활성화하는 메서드
이메일을 보낼 때 데이터의 보안을 유지할 수 있으며, 정보를 안전하게 전송할 수 있음
.login()
이메일 서버에 로그인하기 위한 메서드
.login(메일@계정, 비밀번호) 형태로 사용
로그인에 실패하면 예외가 바생하고 이메일을 전송할 수 없음
.sendmail()
실제로 이메일을 보내는 메서드
.sendmail(발신자 주소, 수신자 주소, 문자열로 변환된 이메일 내용) 형태로 사용
.quit()
SMTP 세션을 종료하는 메서드
이메일을 전송하고 난 후, 더 이상 서버와의 연결을 유지할 필요가 없을 때 호출
오늘의 코드
1. 이메일 송신 정보 설정하기
2. 이메일 메세지 작성하기
3. 이메일 전송하기
import smtplib
from email.mime.text import MIMEText
send_email = "메일@주소"
send_pwd = "메일 비밀번호"
recv_email = "메일@주소"
smtp_name = "smtp.naver.com"
smtp_port = 587
text = "이메일 보내기 테스트입니다"
msg = MIMEText(text, 'plain', 'utf-8')
msg['Subject'] = "테스트"
msg['From'] = send_email
msg['To'] = recv_email
email_string = msg.as_string()
print(email_string)
s = smtplib.SMTP(smtp_name, smtp_port)
s.starttls()
s.login(send_email, send_pwd)
s.sendmail(send_email, recv_email, email_string)
s.quit()
오늘의 코드 결과

오늘의 코드 설명
1. 이메일 송신 정보 설정하기
import smtplib
from email.mime.text import MIMEText
이메일을 보내는 데 필요한 표준 라이브러리를 가져옴
send_email = "메일@주소"
send_pwd = "메일 비밀번호"
recv_email = "메일@주소"
코드를 작성할 때 필요한 변수 정의
send_email : 발신자 이메일
send_pwd : 발신자 비밀번호
recv_email : 수신자 이메일
이런 방식으로 코드에 개인정보를 포함하는 것은 보안상 매우 위험
smtp_name = "smtp.naver.com"
smtp_port = 587
SMTP 서버와 포트를 설정
smtp_name : 이메일 서비스 제공자의 SMTP 주소, 각 이메일 서비스 제공자는 고유의 SMTP 주소를 가지고 있음
smtp_port : SMTP 서버의 포트 번호
587 : STARTTLS 암호화 방식 지원
465 : SSL 암호화 방식 지원
25 : 암호화 없는 기본 포트 (권장하지 않음)
2. 이메일 메세지 작성하기
msg = MIMEText(text, 'plain', 'utf-8')
일반 텍스트 형식으로 작성된 text는 이메일 본문으로 msg에 저장
>이메일 본문 내용 : 이메일 보내기 테스트입니다
msg['Subject'] = "테스트"
msg['From'] = send_email
msg['To'] = recv_email
msg['subject'] : 이메일 제목
msg['From'] : 발신자의 이메일 주소
msg['To'] : 수신자의 이메일 주소
>이메일 제목 : 테스트
email_string = msg.as_string()
print(email_string)
msg에 포함된 내용을 MIME 표준 형식의 문자열로 반환하여 email_string에 저장
실제 발송된 내용과 비교하거나 문제가 있는지 확인하기 위해서 print로 MIME 형식의 이메일 내용을 출력
3. 이메일 전송하기
s = smtplib.SMTP(smtp_name, smtp_port)
SMTP 서버에 연결
s.starttls()
서버와 클라이언트 간 통신을 암호화하기 위해 TLS를 시작
암호화되지 않은 연결을 암호화된 연결로 업그레이드
s = smtplib.SMTP(smtp_name, smtp_port)
s.starttls()
s.login(send_email, send_pwd)
s.sendmail(send_email, recv_email, email_string)
s.quit()
SMTP 서버와 포트를 설정해 연결
TLS를 시작해서 연결을 암호화
SMTP 서버에 로그인
이메일 발송
연결을 종료
'클라우드기반 스마트 융합보안 과정 > Python' 카테고리의 다른 글
| [Python] 웹 스크랩핑, 웹 크롤링, BeautifulSoup, parser (0) | 2025.01.15 |
|---|---|
| [Python] 환경변수, .env 파일, os.getenv() (0) | 2025.01.15 |
| [Python] set(), .write() (1) | 2025.01.15 |
| [Python] 정규 표현식, re.compile(), .findall(), datetime.now(), .strftime("%Y-%m-%d"), .search(), .group() (1) | 2025.01.15 |
| [Python] .endswith(), os.path.join(), with open() as :, .startswith() (0) | 2025.01.14 |