天天看點

python發郵件:

通過smtp發郵件

首先要了解幾個協定:

smtp(simple mail transfer protocol)即簡單郵件傳輸協定,它是一組用于由源位址到目的位址傳送郵件的規則,由它來控制信件的中轉方式。它定義了郵件用戶端和smtp郵件伺服器之間,以及兩台smtp郵件伺服器之間的通信規則。

pop3(post office protocol),郵局協定,它定義了郵件用戶端軟體和pop3郵件伺服器的通信規則。

imap(internet message access protocol),消息通路協定,它是pop3協定的一種擴充。

exchange server 是微軟公司的一套電子郵件服務元件,是個消息與協作系統。 簡單而言,exchange server可以被用來構架應用于企業、學校的郵件系統。

carddav是一種通訊錄同步的開放協定。使用 carddav 同步的通訊錄可以編輯、修改或者删除,并且你在手機上的這些操作也同樣會和伺服器同步,并同時同步到你的其他裝置上。

下圖示範了使用者a從qq郵箱發送郵件到使用者b的163郵箱的過程:

python發郵件:

python的<code>smtplib</code>提供了一種很友善的途徑發送電子郵件。它對smtp協定進行了簡單的封裝。

一般的,我們可以在本地搭建支援<code>smtp</code>的服務,如<code>sendmail</code>,但為了省事,我們可以使用其他的郵件服務商的<code>smtp</code>服務通路,如qq、網易等。

這裡以qq郵箱為例,首先要拿到授權碼,這裡登入你的qq郵箱,在設定中,選擇賬号選項,下拉到pop3/imap/smtp/exchange/carddav/caldav服務項,擷取授權碼。

python發郵件:
python發郵件:

mpao cydz pzfj idge

有了授權碼,開幹!

代碼示例:

運作結果如下:

python發郵件:

授權碼都不變,隻需将<code>mimetext</code>的第二個參數的文本類型改一下即可:

運作結果展示:

python發郵件:

上一個示例中的圖檔,是一個遠端連接配接,那麼我們要發送本地的圖檔,就要采用下面的方式了:

運作結果:

python發郵件:

發送帶附件的郵件,首先要建立<code>mimemultipart</code>執行個體,然後在建構附件,如果有多個附件的話,可依次建構,最後利用<code>smtplib.smtp</code>發送:

python發郵件:

如果要發送其他類型的,如果pdf、doc、xls、mp3格式的,我們都可以通過<code>mimeapplication</code>來完成,<code>mimeapplication</code>預設子類型是<code>application/octet-stream</code>,而<code>application/octet-stream</code>表明這是個二進制檔案,但願接收方知道怎麼處理!!!,然後用戶端收到這個聲明後會根據檔案擴充名來猜測。

結果如下:

python發郵件:
python發郵件:
python發郵件:
python發郵件:
python發郵件:
python發郵件:
python發郵件:
python發郵件:
python發郵件:

繼續閱讀