python 3 smtplib 를 사용 하여 메 일 발송 기능 구현
당시 에는 Liux 가 자체 적 으로 가지 고 있 는 mail 명령 을 사용 하여 이 루어 졌 으 나 어느 날 부터 서버 의 메 일 서비스 가 사용 되 지 않 는 다 는 것 을 알 고 스 크 립 트 를 로 컬 로 옮 기 고 Python 3 의 smtplib 와 crontab 를 조합 하여 이 루어 지 려 고 했 습 니 다.
우선,우 리 는 Python 3 표준 라 이브 러 리 의 smtplib 패키지 와 email 패 키 지 를 가 져 와 서 메 일의 구조 와 발송 을 실현 해 야 합 니 다.
import smtplib
from email.mime.text import MIMEText
from email.header import Header
그리고 메 일 내용 을 설정 해 야 합 니 다.
message = MIMEText(' ', 'plain', 'utf-8')
message['From'] = '[email protected]'
message['To'] = '[email protected],[email protected]'
subject = 'Python SMTP '
message['Subject'] = Header(subject, 'utf-8')
전체 메 일 은 테마(subject),본문,보 내 는 사람과 받 는 사람 을 포함해 야 합 니 다.message=MIMEText('메 일 테스트','plain','utf-8')는 메 일 본문 을 설정 하 는 데 사 용 됩 니 다.email.ime.text.MIMEText 의 세 가지 매개 변수 중 첫 번 째 는 메 일 본문 이 고 두 번 째 는 텍스트 형식 을 설정 하 는 것 이 며 세 번 째 는 텍스트 인 코딩 을 설정 하 는 데 사 용 됩 니 다.
message['From'] = '[email protected]'보 내 는 사람 표시 줄 설정 에 사용 합 니 다.
message['To'] ='[email protected],[email protected]'수신 자 표시 줄 을 설정 하 는 데 사 용 됩 니 다.여러 수신 자 간 에 영문 쉼표 로 직접 분리 하면 된다.
message['Subject']=Header(subject,'utf-8')는 메 일의 테 마 를 설정 하 는 데 사 용 됩 니 다.
이번 메 일 발송 은 왕 이의 126 메 일 을 예 로 들 기 때문에 서버 와 계 정 정 정 보 를 설정 해 야 합 니 다.
sender = '[email protected]'
receivers = ['[email protected]', '[email protected]']
mail_host = 'smtp.126.com'
mail_user = '[email protected]'
mail_pass = '********'
서버,메 일 계 정,비밀번호,보 내 는 사람과 받 는 사람 정 보 를 설정 해 야 합 니 다.
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 SMTP
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print(" !")
except smtplib.SMTPException:
print(" !")
그러나 많은 장면 에서 우 리 는 메 일 에 첨부 파일 을 추가 해 야 한다.이런 상황 에서 우 리 는 먼저 MIME Multipart()인 스 턴 스 를 만 든 다음 에 하나 이상 의 첨부 파일 을 만 들 고 마지막 으로 smtplib 를 사용 하여 보 내야 한다.전체 예제 코드 는 다음 과 같 습 니 다.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
#
sender = '[email protected]'
receivers = ['[email protected]', '[email protected]']
mail_host = 'smtp.126.com'
mail_user = '[email protected]'
mail_pass = 'password or authorization code here'
# MIMEMultipart ,
message = MIMEMultipart()
message.attach(MIMEText(' ', 'plain', 'utf-8'))
message['From'] = '[email protected]'
message['To'] = '[email protected],[email protected]'
subject = 'Python SMTP '
message['Subject'] = Header(subject, 'utf-8')
#
attr = MIMEText(open('./test.txt', 'r').read())
attr['Content-Type'] = 'application/octet-stream'
attr['Content-Disposition'] = 'attachment; filename = ' + 'test.txt'
message.attach(attr)
#
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 SMTP
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print(" !")
except smtplib.SMTPException:
print(" !")
이로써 우 리 는 첨부 파일 이 있 는 메 일 발송 을 실 현 했 습 니 다.그 다음 에 crontab 등 도 구 를 통 해 정시 에 메 일 을 보 내 는 임 무 를 완성 할 수 있 습 니 다.여기 서 긴 말 하지 않 겠 습 니 다.필요 한 학생 들 은 스스로 crontab 의 사용 을 조회 할 수 있 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.