溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3怎么實現SMTP發送郵件

發布時間:2021-05-07 12:26:59 來源:億速云 閱讀:225 作者:小新 欄目:開發技術

這篇文章主要介紹python3怎么實現SMTP發送郵件,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Python的優點有哪些

1、簡單易用,與C/C++、Java、C# 等傳統語言相比,Python對代碼格式的要求沒有那么嚴格;2、Python屬于開源的,所有人都可以看到源代碼,并且可以被移植在許多平臺上使用;3、Python面向對象,能夠支持面向過程編程,也支持面向對象編程;4、Python是一種解釋性語言,Python寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序;5、Python功能強大,擁有的模塊眾多,基本能夠實現所有的常見功能。

SMTP協議

??首先了解SMTP(簡單郵件傳輸協議),郵件傳送代理程序使用SMTP協議來發送電郵到接收者的郵件服務器。SMTP協議只能用來發送郵件,不能用來接收郵件,而大多數的郵件發送服務器都是使用SMTP協議。SMTP協議的默認TCP端口號是25。

環境調試

??上面說了是使用SMTP協議發送的郵件,所以需要先查看你的發件人郵箱是否有開啟SMTP協議,如沒有,則需要開啟,我測試使用的是163.com的郵箱作為發信人郵箱,在設置中開啟SMTP協議如下圖所示。

python3怎么實現SMTP發送郵件

??測試的前提是你需要開通客戶端授權,開通后會讓你設置密碼,那個密碼要記好,下面的passwd接收的是授權密碼而不是郵箱密碼!否則會出現下圖所示的錯誤提示:

python3怎么實現SMTP發送郵件

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 發送的郵件內容包含了未被許可的信息,或被系統識別為垃圾郵件。請檢查是否有用戶發送病毒或者垃圾郵件。如下圖所示:

python3怎么實現SMTP發送郵件

以上是“python3怎么實現SMTP發送郵件”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女