用Socket寄送電子郵件--續篇(不錯的文章)(轉自動力線上)

來源:互聯網
上載者:User
用Socket寄送電子郵件--續篇    
作者:limodou    
  在前面我曾經寫過一篇文章,介紹了如何利用socket編程來發送郵件,以解決web伺服器不支援mail()函數的問題。經過我的測試也是可以使用的。但目前眾多的免費郵件供應商(從263開始,163,新浪網也快開始了)均在smtp功能上增加了認證功能,使得原郵件發送類無法使用。在經過對相應smtp後續rfc的學習之後,經過了多次的實驗,我終於實驗成功了。於是懷著急迫的心情向大家介紹。
 
SMTP 認證功能介紹    
  此處不想向你詳細介紹SMTP認證功能,因為我也說不清楚,詳細的請參考[RFC 2554]規範。SMTP的認證功能主要是增加了AUTH命令。AUTH命令有多種用法,而且有多種認證機制。AUTH支援的認證機制主要有LOGIN,CRAM-MD5[注1]等。LOGIN應該是大多數免費郵件伺服器都支援的,263與新浪都支援。而新浪還支援CRAM-MD5機制。認證機制一般只在真正發送郵件之前進行,而且只需要執行一次。當認證成功後,即可按原來正常的處理髮送郵件。原理是口令-應答(Challenge-Response),即由伺服器發送命令要求用戶端回答,用戶端根據伺服器發送資訊進行回答,如果應答通過了,則認證成功,即可繼續處理。下面對這兩種製作一個簡單介紹。S:表示伺服器返回,C:表示用戶端發送。
 
LOGIN    
它應該比較簡單。口令-應答過程如下:    
1     C: AUTH LOGIN    
2     S: 334 dXNlcm5hbWU6    
3     C: dXNlcm5hbWU6    
4     S: 334 cGFzc3dvcmQ6    
5     C: cGFzc3dvcmQ6    
6     S: 235 Authentication successful.    
1 為用戶端向伺服器發送認證指令。
 
2 服務端返回base64編碼串,成功碼為334。編碼字串解碼後為“username:”,說明要求用戶端發送使用者名稱。
 
3 用戶端發送用base64編碼的使用者名稱,此處為“username:”。
 
4 服務端返回base64編碼串,成功碼為334。編碼字串解碼後為“password:”,說明要求用戶端發送使用者口令。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.