用Python3傳送郵件詳解

weixin_34198881發表於2018-06-09

 

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

  郵件自網際網路誕生之初就有了,它和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庫配合使用後郵件已經基本人類可讀了

  

 

 

  

 

----

相關文章