python 3 SMTP 메 일 보 내기 상세 튜 토리 얼 구현

간단 한 소개
  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 기반 웹 응용 개발 실전》
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기