반응형
SMTP란?
SMTP는 메일 발송 요청을 처리하는 서버이다. 이 때 SMTP는 Simple Mail Transfer Protocol의 약자로, 이메일을 주고 받는 표준적인 약속 체계나 규약을 의미한다. SMTP가 메일 발송을 위한 프로토콜이라면, IMAP은 메일 수신을 위한 프로토콜이라 할 수 있다. MIME(Multipurpose Internet Mail Extensions)은 메일 작성을 위한 표준적인 형식을 의미한다. 메일 전송을 요청할 때, 서버가 이해할 수 있도록 MIME형식으로 메일을 작성해야 한다.
사용방법
파이썬으로 메일을 작성할때는 별도의 라이브러리가 필요하지 않으며, Smtplib라는 기본 라이브러리를 사용합니다.
Smtplib는 Smtp를 사용할 때 필요한 모듈로, 파이썬 설치시 기본적으로 내장되어있는 모듈입니다.
사용하시는 메일을 접속하여 smtp 설정을 해주셔야 해당 계정으로 메일을 작성할 수 있습니다.
# 코드블럭에 삽입하다보니 인덴트가 어긋날수 있습니다. 참고해주세요!
import smtplib
from email.mime.text import MIMEText # 메일 제목과 내용을 설정하는 모듈
1. SMTP 서버 연결
stmp = smtplib.SMTP('smtp server url', prot)
2. TLS 암호화
# SMTP 서버의 포트에 연결할 때 TLS(전송 계층 보안) 암호화를 해주어야 한다.
smtp = smtp.starttls()
3. 로그인
# SMTP서버로 암호화된 연결을 설정하고 로그인 인증이 필요합니다.
# SMTP 설정을 한 메일 계정을 입력합니다.
smtp.login('id', 'password')
4. 메일 제목 및 내용 작성
msg = MIMEText('본문내용입니다.')
msg['Subject'] = '메일 제목입니다.'
5. 메일 보내기
smtp.sendmail(from_address, to_address, msg, mail_options)
6. 연결 종료
# 모든 작업을 마친 후 1번에서 연결한 SMTP 서버와 연결을 종료합니다.
smtp.quit()
예제코드
# 코드블럭에 삽입하다보니 인덴트가 어긋날수 있습니다. 참고해주세요!
import smtplib
from email.mime.text import MIMEText
print('네이버 또는 구글 메일만 사용 가능합니다.')
sender_id = input('메일을 보낼 계정을 입력해 주세요: ')
print('='*50)
sender_pw = input('계정 비밀번호를 입력해 주세요: ')
print('='*50)
if 'naver' in sender_id:
smtp_server = "smtp.naver.com"
elif 'google' in sender_id:
smtp_server = "smtp.google.com"
else:
print('네이버 또는 구글 메일만 사용 가능합니다.\n메일 주소를 확인해 주세요')
raise Exception('네이버 또는 구글 메일만 사용 가능합니다.')
smtp_info = {
"smtp_server": smtp_server, # SMTP 서버 주소
"smtp_user_id": sender_id,
"smtp_user_pw": sender_pw,
"smtp_port": 587 # SMTP 서버 포트
}
to = input('받는 분 메일 주소를 입력해 주세요\n여러명일경우 ,로 구분됩니다.\nex)test@test.com, test2@test.com\n')
print('='*50)
title = input('메일 제목을 입력해 주세요\n')
print('='*50)
# 메일 내용이 몇줄이 들어갈지 모르기 때문에 무한반복으로 데이터를 인풋받아 리스트에 넣어줌
content = []
print('메일 내용을 작성해 주세요\n 작성 완료시 숫자 0을 입력해주세요.')
i = 0
while(True):
i += 1
data = input(f'{i}번째 라인: ')
if data == '0':
break
else:
content.append(data)
print('='*50)
# 리스트로 받은 content를 \n로 조인하여 줄바꿈
msg = MIMEText('\n'.join(content),_charset="utf8")
msg['Subject'] = title # 메일 제목
msg['From'] = smtp_info['smtp_user_id'] # 송신자
msg['To'] = to
smtp = smtplib.SMTP(smtp_info['smtp_server'], smtp_info['smtp_port'])
smtp.ehlo
smtp.starttls() # TLS 보안 처리
smtp.login(sender_id , sender_pw) # 로그인
smtp.sendmail(msg['From'], msg['To'].split(','), msg.as_string())
smtp.quit()
print('메일을 성공적으로 보냈습니다.')
반응형
'프로그래밍 언어&프레임워크 > python' 카테고리의 다른 글
openpyxl을 이용한 엑셀 데이터 추출하기 (0) | 2021.07.26 |
---|---|
winreg를 이용한 MS오피스 사용기록 찾기 (0) | 2020.04.19 |