python 3 SMTP 메 일 보 내기 상세 튜 토리 얼 구현
3949 단어 pythonSMTP우편물 을 발송 하 다
Python 이 메 일 을 보 낸 튜 토리 얼 은 본인 이 웹 사 이 트 를 검색 할 때 한 무더기 의 원 리 를 말 한 후에 실현 코드 를 내 놓 았 습 니 다.제 가 테스트 한 코드 로 메 일 을 보 낼 때 성공 하지 못 했 습 니 다.나중에 한참 을 찾 았 는데 원인 을 찾 았 습 니 다.이것 은 상세 한 환경 디 버 깅 으로 인해 발생 하지 않 았 기 때문에 오늘 특별히 상세 한 튜 토리 얼 을 만 들 었 습 니 다.한 걸음 한 걸음 환경 디 버 깅 부터 코드 까지 모든 튜 토리 얼 을 실현 하고 있 습 니 다.해결 방법 을 찾 으 려 고 애 쓰 고 있 지만 효과 적 인 해결 을 얻 지 못 하 는 친구 들 에 게 도움 이 되 기 를 바 랍 니 다.
SMTP 프로 토 콜
먼저 SMTP(간단 한 메 일 전송 프로 토 콜)를 알 고 메 일 전송 프 록 시 는 SMTP 프로 토 콜 을 사용 하여 수신 자의 메 일 서버 에 메 일 을 보 냅 니 다.SMTP 프로 토 콜 은 메 일 만 보 낼 수 있 고 메 일 을 받 을 수 없 으 며 대부분의 메 일 발송 서버 는 SMTP 프로 토 콜 을 사용 합 니 다.SMTP 프로 토 콜 의 기본 TCP 포트 번 호 는 25 입 니 다.
환경 디 버 깅
위 에서 SMTP 프로 토 콜 을 사용 하여 보 낸 메 일이 라 고 했 기 때문에 먼저 보 낸 사람의 메 일이 SMTP 프로 토 콜 을 열 었 는 지 확인 해 야 합 니 다.없 으 면 열 어야 합 니 다.저 는 163.com 의 메 일 을 보 낸 사람의 메 일 로 사 용 했 습 니 다.설정 에서 SMTP 프로 토 콜 을 열 려 면 다음 과 같 습 니 다.
테스트 의 전 제 는 클 라 이언 트 권한 수 여 를 개통 해 야 한 다 는 것 입 니 다.개통 후 비밀 번 호 를 설정 할 수 있 습 니 다.그 비밀 번 호 는 잘 기억 해 야 합 니 다.아래 passwd 는 메 일 비밀번호 가 아 닌 권한 수여 비밀 번 호 를 받 습 니 다!그렇지 않 으 면 다음 그림 에서 보 여 주 는 오류 알림 이 나타 납 니 다.
Demo
import smtplib
from email.header import Header
from email.mime.text import MIMEText
# SMTP
mail_host = "smtp.163.com" # SMTP
mail_user = "***" #
mail_pass = "***" # ,
sender = ***@163.com' # ( , )
receivers = [***@qq.com'] # , QQ
content = ' Python'
title = ' ' #
def sendEmail():
message = MIMEText(content, 'plain', 'utf-8') # , ,
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # SSL , 465
smtpObj.login(mail_user, mail_pass) #
smtpObj.sendmail(sender, receivers, message.as_string()) #
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content):
email_client = smtplib.SMTP(SMTP_host)
email_client.login(from_account, from_passwd)
# create msg
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8') # subject
msg['From'] = from_account
msg['To'] = to_account
email_client.sendmail(from_account, to_account, msg.as_string())
email_client.quit()
if __name__ == '__main__':
sendEmail()
# receiver = '***'
# send_email2(mail_host, mail_user, mail_pass, receiver, title, content)
처음 테스트 를 시 작 했 을 때 첫 번 째 메 일 을 보 내 는 것 은 성 공 했 지만 나중에 다시 테스트 할 때 힌트 554 가 나 왔 습 니 다.제 시 된 사이트 에 따 르 면오류 코드 554 DT:SPM 이 보 낸 메 일의 내용 은 허가 되 지 않 은 정 보 를 포함 하거나 시스템 에서 스 팸 메 일 로 인식 된다.사용자 가 바이러스 나 스 팸 메 일 을 보 냈 는 지 확인 하 세 요.다음 그림 에서 보 듯 이:
이 문 제 를 어떻게 해결 할 지 는 다음 박문 에서 전 개 될 것 이다.본 친구 에 게 좋 은 해결책 이 있다 면 말씀 해 주 십시오.감사합니다.
첨부
전자 책 첨부 혜택(포인트 다운로드 면제)
참고 자료
《Flask Web 개발:Python 기반 웹 응용 개발 실전》
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.