前言
本文主要給大家介紹了關于Python3用SMTP協議發送電子郵件的相關內容,在介紹如何使用python程序向指定郵箱發送郵件之前,我們需要先介紹一下有關電子郵件的相關知識。
Email的歷史比Web還要久遠,直到現在,Email也是互聯網上應用非常廣泛的服務。
幾乎所有的編程語言都支持發送和接收電子郵件,但是,先等等,在我們開始編寫代碼之前,有必要搞清楚電子郵件是如何在互聯網上運作的。
假設我們自己的電子郵件地址是me@163.com,對方的電子郵件地址是friend@sina.com,現在我們用Outlook或者Foxmail之類的軟件寫好郵件,填上對方的Email地址,點“發送”,電子郵件就發出去了。這些電子郵件軟件被稱為MUA:Mail User Agent——郵件用戶代理。
Email從MUA發出去,不是直接到達對方電腦,而是發到MTA:Mail Transfer Agent——郵件傳輸代理,就是那些Email服務提供商,比如網易、新浪等等。由于我們自己的電子郵件是163.com,所以,Email首先被投遞到網易提供的MTA,再由網易的MTA發到對方服務商,也就是新浪的MTA。這個過程中間可能還會經過別的MTA,但是我們不關心具體路線,我們只關心速度。
Email到達新浪的MTA后,由于對方使用的是@sina.com的郵箱,因此,新浪的MTA會把Email投遞到郵件的最終目的地MDA:Mail Delivery Agent——郵件投遞代理。Email到達MDA后,就靜靜地躺在新浪的某個服務器上,存放在某個文件或特殊的數據庫里,我們將這個長期保存郵件的地方稱之為電子郵箱。對方要取到郵件,必須通過MUA從MDA上把郵件取到自己的電腦上。
所以,一封電子郵件的旅程就是:
發件人 -> MUA -> MTA -> MTA -> 若干個MTA -> MDA <- MUA <- 收件人
有了上述基本概念,要編寫程序來發送和接收郵件,本質上就是:
1.編寫MUA把郵件發到MTA。
2.編寫MUA從MDA上收郵件。
發郵件時,MUA和MTA使用的協議就是SMTP:Simple Mail Transfer Protocol,后面的MTA到另一個MTA也是用SMTP協議。
收郵件時,MUA和MDA使用的協議有兩種:POP:Post Office Protocol,目前版本是3,俗稱POP3;IMAP:Internet Message Access Protocol,目前版本是4,優點是不但能取郵件,還可以直接操作MDA上存儲的郵件,比如從收件箱移到垃圾箱,等等。
郵件客戶端軟件在發郵件時,會讓你先配置SMTP服務器,也就是你要發到哪個MTA上。假設你正在使用163的郵箱,你就不能直接發到新浪的MTA上,因為它只服務新浪的用戶,所以,你得填163提供的SMTP服務器地址:smtp.163.com,為了證明你是163的用戶,SMTP服務器還要求你填寫郵箱地址和郵箱口令,這樣,MUA才能正常地把Email通過SMTP協議發送到MTA。
新聞熱點
疑難解答