이메일 예제
SMTP(Simple Mail Transfer Protocol)는 e-mail을 컴퓨터에서 다른 컴퓨터로 전송할 때 사용하는 메일 서버의 기본 프로토콜이다.
이메일에 첨부파일을 넣어 전송하는 예제이다.
Ex)
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import re
SMTP_SERVER = 'smtp.gmail.com' #gmail 서버
SMTP_PORT = 465 #gmail 포트
SMTP_USER = '[email protected]'
SMTP_PASSWORD = '비밀번호'
def send_mail(name, addr, subject, contents, attachment=None): #attachment는 첨부파일을 의미 =None은 없을 수도 있음을 의미(기본값 지정)
#이메일 유효성 검사 코드
if not re.match('(^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)',addr): #^는 문자열의 시작을 의미 모든 알파벳과 숫자와 _.- 중의 하나로 시작하는 문자열임을 의미 +는 그 이후 하나 이상 나온다는 의미 $는 문자열의 끝을 의미
print('Wrong email')
return
msg = MIMEMultipart('alternative') #텍스트를 포함하겠다는 의미
if attachment:
msg = MIMEMultipart('mixed') #텍스트 뿐 아니라 파일도 포함하겠다는 의미
msg['From'] = SMTP_USER
msg['To'] = addr
msg['Subject'] = name + '님, ' + subject
text = MIMEText(contents, _charset='utf-8')
msg.attach(text) #내용을 붙여나가는 함수
if attachment:
from email.mime.base import MIMEBase #파일전송에 필요한 클래스
from email import encoders #파일을 형식에 맞춰 인코딩하는 클래스
file_data = MIMEBase('application', 'octect-stream') #일반적인 파일을 의미
file_data.set_payload(open(attachment, 'rb').read()) #rb의 b는 binary로 컴퓨터가 인식하는 형태로 열겠다는 의미
encoders.encode_base64(file_data)
import os
filename = os.path.basename(attachment) #파일경로를 찾는 기능을 제공
file_data.add_header('Content-Disposition', 'attachment; filename="'+filename+'"' ) #헤더정보를 추가
msg.attach(file_data)
smtp = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) #서버정보를 가진 클래스
smtp.login(SMTP_USER, SMTP_PASSWORD)
smtp.sendmail(SMTP_USER, addr, msg.as_string()) #as_string함수로 정해진 메일 형식으로 변환
smtp.close()
contents = '''
자동으로 보내지는 메일 '''
send_mail('김경환','[email protected]','자동화 메일',contents,'test.txt')
Author And Source
이 문제에 관하여(이메일 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimkh0930/이메일-예제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)