亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python3實現(xiàn)SMTP發(fā)送郵件詳細教程

 更新時間:2018年06月19日 10:05:15   作者:孫華強  
這篇文章主要為大家詳細介紹了python3實現(xiàn)SMTP發(fā)送郵件的詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下

簡介

  Python發(fā)送郵件的教程本人在網(wǎng)站搜索的時候搜索出來了一大堆,但是都是說了一大堆原理然后就推出了實現(xiàn)代碼,我測試用給出的代碼進行發(fā)送郵件時都不成功,后面找了很久才找到原因,這都是沒有一個詳細的環(huán)境調(diào)試導致,所以今天特出一個詳細的教程,一步一步從環(huán)境調(diào)試到代碼實現(xiàn)整一個教程,希望對還在苦苦尋找解決方法卻遲遲不能得到有效解決的朋友們一點幫助。

SMTP協(xié)議

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

環(huán)境調(diào)試

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


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

Demo

import smtplib
from email.header import Header
from email.mime.text import MIMEText

# 第三方 SMTP 服務(wù)
mail_host = "smtp.163.com"   # SMTP服務(wù)器
mail_user = "***"         # 用戶名
mail_pass = "***"        # 授權(quán)密碼,非登錄密碼

sender = ***@163.com'  # 發(fā)件人郵箱(最好寫全, 不然會失敗)
receivers = [***@qq.com'] # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱

content = '我用Python'
title = '人生苦短' # 郵件主題

def sendEmail():

  message = MIMEText(content, 'plain', 'utf-8') # 內(nèi)容, 格式, 編碼
  message['From'] = "{}".format(sender)
  message['To'] = ",".join(receivers)
  message['Subject'] = title

  try:
    smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 啟用SSL發(fā)信, 端口一般是465
    smtpObj.login(mail_user, mail_pass) # 登錄驗證
    smtpObj.sendmail(sender, receivers, message.as_string()) # 發(fā)送
    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)

剛開始測試時,第一次發(fā)送郵件是成功的,但是后面再次測試時卻出現(xiàn)了提示554,根據(jù)給出的網(wǎng)址查看錯誤代碼 

554 DT:SPM 發(fā)送的郵件內(nèi)容包含了未被許可的信息,或被系統(tǒng)識別為垃圾郵件。請檢查是否有用戶發(fā)送病毒或者垃圾郵件。如下圖所示:

針對該問題,究竟如何解決,會在下一篇博文中進行展開。若看到的朋友有好的解決方法,還請?zhí)岢觯诖烁兄x。

參考資料

附 電子書福利(免積分下載)

《Flask Web開發(fā):基于Python的Web應(yīng)用開發(fā)實戰(zhàn)》

《Learning Python, 5th Edition》

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論