python – 如何通過GMail發送郵件:smtplib的使用

來源:互聯網
上載者:User

神馬事SMTP?百科名片

SMTP(Simple Mail Transfer Protocol)即簡易郵件傳輸通訊協定,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議族,它協助每台電腦在發送或中轉信件時找到下一個目的地。通過SMTP協議所指定的伺服器,就可以把E-mail寄到收信人的伺服器上了,整個過程只要幾分鐘。SMTP伺服器則是遵循SMTP協議的發送郵件伺服器,用來發送或中轉寄出的電子郵件。

SMTP類似於HTTP,在應用程式層是文本形式的。在UNIX編程藝術裡講過,要提倡明文的協議,這樣從肉眼就很容易分析,這樣就不需要編寫對應的視覺編輯器即可實現調試。

但可惜,當使用GMail的時候,通過WireShark分析,除了最初的握手協議外,具體傳輸內容是無法得到的(如)

1.建立TCP三路握手

2.SMTP自己的握手

3.用戶端啟動SSL握手 - 伺服器等待握手 - 開始SSL握手了

4.從這裡開始,所有內容是加密的了。


所以這裡只好開啟smtp的debug模式:smtp.set_debuglevel(1)。

這樣能夠在控制台詳細地列印出互動過程:

所有互動都是用戶端‘SEND:****’開始,伺服器返回'reply:***'結束,是不是很像HTTP.


1.通過串連SMTP.gmail.com:25,然後伺服器返回伺服器相關資訊,並要求開啟SSL:‘STARTTLS’

2.開啟TLS,Gmail要求授權才能繼續操作:AUTH LOGIN PLAIN XOAUTO,當然TLS開啟後的所有內容無法通過WireShark等抓包工具捕獲的,所以不用擔心第三方會截取這部分內容,這就是為什麼網頁也要提倡HTTPS的理由,無法被第三方截取。

3.授權請求 - 返回授權成功哦。

4.授權成功後就可以開始發送內容了:

5.最後記得要退出哦。。

每當我看多周邊人重新寫SMTP處理邏輯的時候,都想告訴他一聲:Python已經有相關庫了,為什麼不用它,而重新造輪子呢?是要學習這個協議的精髓嗎?如果這樣,我還是建議你去讀HTTP吧,現在很多網路應用都依賴於HTTP,深入研究SMTP或者重新造輪子都是不可取的。

 如果不會Python怎麼辦?

能讀懂下面的代碼就會了。

import smtplibimport sysimport email.mime.text# my test mailmail_username='harkyes@gmail.com'mail_password='harktest'from_addr = mail_usernameto_addrs=('lihe21327@gmail.com')# HOST & PORTHOST = 'smtp.gmail.com'PORT = 25# Create SMTP Objectsmtp = smtplib.SMTP()print 'connecting ...'# show the debug logsmtp.set_debuglevel(1)# connettry:    print smtp.connect(HOST,PORT)except:    print 'CONNECT ERROR ****'# gmail uses sslsmtp.starttls()# login with username & passwordtry:    print 'loginning ...'    smtp.login(mail_username,mail_password)except:    print 'LOGIN ERROR ****'# fill content with MIMEText's object msg = email.mime.text.MIMEText('Hi ,I am leehark')msg['From'] = from_addrmsg['To'] = ';'.join(to_addrs)msg['Subject']='hello , today is a special day'print msg.as_string()smtp.sendmail(from_addr,to_addrs,msg.as_string())smtp.quit()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.