本文簡要說明了通過POP3協議收取郵件、MIME郵件的解碼的原理;針對收取和MIME解碼,提供了兩個實用的PHP類,並提供了使用的範例。分為郵件收取、MIME解碼兩個部分。這裡我們先向您介紹郵件的收取,解碼部分會在以後的文章中為各位詳細的介紹,敬請關注。
現在Internet上最大的應用應該是非Email莫屬了,我們每天都習慣於每天通過Email進行交流,各大網站也幾乎都推出了自己的基於WEB的免費郵件系統。在本文裡,筆者將介紹一些Email實現的一些原理。同時我們假設你對於PHP的編程有一定的基礎,對於TCP/IP協議也有一定的瞭解。
POP協議簡介
POP的全稱是PostOfficeProtoco,即郵局協議,用於電子郵件的接收,現在常用的是第三版,簡稱為POP3。通過POP協議,客戶機登入到伺服器上後,可以對自己的郵件進行刪除,或是下載到本地,下載後,電子郵件客戶軟體就可以在本地對郵件進行修改、刪除等。另外一種用於接收信件的郵件是IMAP協議,現在發展很快,在本文中,我們暫不討論。
POP伺服器一般使用的是TCP的110號連接埠,如果你用的是Foxmail的話,在其收郵件的時候,你可以看到其資訊提示視窗有這麼一些命令:
“正在串連到 62.123.23.123:110";
"USERBOSS_CH";
"PASS..............";
下面讓我們來看一段與POP3伺服器對話的實錄:
telenetpop.china.com110
+OKAIMCPOPservice(mail2.china.com)isready.
USERboss_ch
+OKPleaseenterpasswordforuser.
PASS******
+OKboss_chhas1messages(750octets)
STAT
+OK1750
LIST
+OK1messages(750octets)
1750
RETR1
+OK750octets
Received:fromsmtp2.ptt.js.cn([202.102.24.37])bychina.com(JetMail2.5.3.0)
withSMTPidjm4839cc4227;Sat,23Sep200005:31:21-0000
Received:fromchenjunqing([61.155.120.6])bysmtp2.ptt.js.cn
(NetscapeMessagingServer4.15)withSMTPidG1BRHJ03.V07for
;Sat,23Sep200013:34:31+0800
Date:Sat,23Sep200013:34:18+0800
From:=?ISO-8859-1?Q?=B3=C2=BF=A1=C7=E5?=
To:boss_ch@china.com
Subject:=?ISO-8859-1?Q?=D3=CA=BC=FE=CA=BE=C0=FD?=
X-mailer:FoxMail3.1[cn]
Mime-Version:1.0
Content-Type:text/plain;charset="GB2312"
Content-Transfer-Encoding:8bit
Message-ID:
您好!
這是一個郵件的小樣本
QUIT
+OKPopserveratsigningoff.
以下對幾個常用的POP3命令作一個簡單的介紹 :
命令 參數 狀態 描述
------------------------------------------
USER username 認可 此命令與下面的pass命令若成功,將導致狀態轉換
PASS password 認可
APOP Name,Digest認可 Digest是MD5訊息摘要
------------------------------------------
STAT None 處理 請求伺服器發回關於郵箱的統計資料,如郵件總數和總位元組數
UIDL [Msg#] 處理 返回郵件的唯一識別碼,POP3會話的每個標識符都將是唯一的
LIST [Msg#] 處理 返回郵件數量和每個郵件的大小
RETR [Msg#] 處理 返回由參數標識的郵件的全部文本
DELE [Msg#] 處理 伺服器將由參數標識的郵件標記為刪除,由quit命令執行
RSET None 處理 伺服器將重設所有標記為刪除的郵件,用於撤消DELE命令
TOP [Msg#] 處理 伺服器將返回由參數標識的郵件前n行內容,n必須是正整數
NOOP None 處理 伺服器返回一個肯定的響應,不做任何操作。
------------------------------------------
QUIT None 更新退出