用Python3發送郵件詳解


 

整個郵件系統是怎樣工作的

  郵件自互聯網誕生之初就有了,它和web服務一樣也是采用的c/s架構,比如我們常見的郵件客戶端有outlook、foxmail這些郵件客戶端軟件。

  當我們要發郵件時客戶端就通過smtp協議與服務端進行通信把我們的郵件發到服務器端,比如我用的QQ郵件那么我發的郵件一定是先去了QQ

  郵箱的服務器,這個時候服務器會看一下我發送的目標地址是多少,如果也是QQ郵箱用戶,那么它就直接把信投遞到對應的用戶;如果目標

  地址不是QQ郵箱那么比如說是1234@162.com,那么它會把郵件發送到162郵箱的服務器,162郵箱的服務器會把郵件投遞到目標用戶。投遞

  完成后郵件也只是進了目標用戶的郵桶,用戶想要看郵件還要取出來才行;郵件客戶端取郵件的過程用的是pop3協議,當然還有另一個協議

  也是可以用來取郵件的它就imap協議。

 

python3怎么發郵件呢

  python3中我們可以直接使用smtplib這個標准庫進行郵件的發送,但是為你發送的郵件對“人類”更加的友好,你通常還要加上email這個

  標准庫

 

1、了解一下最簡單的郵件發送程序

from smtplib import SMTP_SSL

with SMTP_SSL(host="smtp.qq.com") as smtp :
    smtp.login(user='1721900707@qq.com',password='xxxxxxxxxxx')
    smtp.sendmail(from_addr="1721900707@qq.com",to_addrs="1721900707@qq.com",msg="hello world")

  代碼的邏輯和我們日常使用郵箱時的過程是一樣的、先用自己的賬號密碼登錄上郵箱、接下來就可以發送郵件了;上面的代碼

  並沒有用到email標准庫,所以它發出來的郵件一個正常的人類是看不懂的;但是對於寫代碼來說它保留了主干,更有利於我

  們理解發送郵件的過程

      

 

2、來一個看的下去的例子

from smtplib import SMTP_SSLfrom email.mime.text import MIMEText

with SMTP_SSL(host="smtp.qq.com") as smtp :
    smtp.login(user='1721900707@qq.com',password='xxxxxxxxxxxxx')
    
    msg = MIMEText("這是來自Python3的一封測試郵件",_charset="utf8")
    msg["Subject"] = "測試郵件"
    msg["from"] = '1721900707@qq.com'
    msg["to"] = '1721900707@qq.com'
    
    smtp.sendmail(from_addr="1721900707@qq.com",to_addrs="1721900707@qq.com", msg=msg.as_string())
        

  通過於email庫配合使用后郵件已經基本人類可讀了

  

 

 

  

 

----


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM