用socket來傳送郵件

2021-09-30 07:53:03 字數 879 閱讀 1922

以前用vb時,記得有個mail控制項,後來接觸到了cdo.messages這個玩意,發郵件是蠻方便,那還是在vbs的情況下,後來看了下php,perl,發現發郵件乙個函式就可以了,呵呵,那麼這些背後的細節是什麼呢,還是用socket來揭示下吧:

郵件傳送離不開一樣東西,smtp,即簡單郵件傳輸協議,對應埠為25,它是乙個應用層協議,基於tcp連線的,有自己的協議結構。下面是它的結構展示:

(1)建立tcp連線。

(2)客戶端向伺服器傳送hello命令以標識發件人自己的身份,然後客戶端傳送mail命令。

(3)伺服器端以ok作為響應,表示準備接收。

(4)客戶端傳送rcpt命令。

(5)伺服器端表示是否願意為收件人接收郵件。

(6)協商結束,傳送郵件,用命令data傳送輸入內容。

(7)結束此次傳送,用quit命令退出。

值得一提的是,傳送驗證的使用者名稱和密碼是要經過base64加密的。其實我們經常說的esmtp就是smtp的擴充套件,需要身份驗證,這樣提高了其安全性。其它和smtp一樣。

好了,原理講差不多了,**怎麼實現呢:

以上的郵件由信封,首部,和正文構成。信封即mail from和rcpt to。首部是from,to,subject,正文便是你要傳送的郵件內容。當我們傳送乙個郵件報文時,用data命令,它以乙個「./r/n「字串結束。即代表我們傳送內容的結束。

用郵件來傳送表單資料

使用php 向乙個指定的郵箱傳送資料是非常簡單的一件事情,以至於你可能會想,為什麼人們不每天用 它呢?php 提供的mail 函式使用四個引數 收信人,主題,郵件資訊和附加的郵件頭。通過這個簡短的教 程,你將學會如何設定這些引數的值,然後傳送一封郵件和返回乙個確認頁面。我們將通過兩步來實現 準 備表...

使用Socket傳送郵件

之前寫過一篇 使用php傳送郵件 方法是利用nette mail元件傳送郵件。以下內容整理自 php核心技術與最佳實踐 php有乙個自帶的mail 函式,但是要想使用smtp協議傳送郵件,需要安裝smtp伺服器。如果不想安裝,可以使用socket傳送郵件。smtp協議建立在tcp協議之上,所以原則上...

用Socket傳送電子郵件 php

用socket傳送電子郵件 hello this is a test 生成mime類例項 mime new mime mail chatme 263.net to,str 新增html附件 mime attach html data,html,base64 注釋掉,採用我的傳送郵件處理 mime s...