用PHP實現POP3郵件的收取(一)

POP協議簡介

本文簡要說明了通過POP3協議收取郵件、MIME郵件的解碼的原理;針對收取和MIME解碼,提供了兩個實用的PHP類,並提供了使用的樣例。分爲郵件收取、MIME解碼兩個部分。這裏我們先向您介紹郵件的收取,解碼部分會在以後的文章中爲各位詳細的介紹,敬請關注。

現在Internet上最大的應用應該是非Email莫屬了,我們每天都習慣于每天通過Email進行交流,各大網站也幾乎都推出了自己的基于WEB的免費郵件系統。在本文裏,筆者將介紹一些Email實現的一些原理。同時我們假設你對于PHP的編程有一定的基礎,對于TCP/IP協議也有一定的了解。

POP 協議簡介

POP的全稱是 Post Office Protoco ,即郵局協議,用于電子郵件的接收,現在常 用的是第三版 ,簡稱爲 POP3。通過POP協議,客戶機登錄到服務器上後,可以對自己的郵件進行刪除,或是下載到本地,下載後,電子郵件客戶軟件就可以在本地對郵件進行修改、刪除等。另外一種用于接收信件的郵件是 IMAP 協議,現在發展很快,在本文中,我們暫不討論。

POP服務器一般使用的是TCP的110號端口,如果你用的是Foxmail的話,在其收郵件的時候,你可以看到其信息提示窗口有這麽一些命令:

“正在連接到62.123.23.123:110";

"USER BOSS_CH";

"PASS..............";

下面讓我們來看一段 與 POP3 服務器對話的實錄:

telenet pop.china.com 110

+OK AIMC POP service (mail2.china.com) is ready.

USER boss_ch

+OK Please enter password for user <boss_ch>.

PASS ******

+OK boss_ch has 1 messages (750 octets)

STAT

+OK 1 750

LIST

+OK 1 messages (750 octets)

1 750

RETR 1

+OK 750 octets

Received: from smtp2.ptt.js.cn([202.102.24.37]) by china.com(JetMail 2.5.3.0)

with SMTP id jm4839cc4227; Sat, 23 Sep 2000 05:31:21 -0000

Received: from chenjunqing ([61.155.120.6]) by smtp2.ptt.js.cn

(Netscape Messaging Server 4.15) with SMTP id G1BRHJ03.V07 for

<boss_ch@china.com>; Sat, 23 Sep 2000 13:34:31 +0800

Date: Sat, 23 Sep 2000 13:34:18 +0800

From: =?ISO-8859-1?Q?=B3=C2=BF=A1=C7=E5?= <Boss_ch@netease.com>

To: boss_ch@china.com <boss_ch@china.com>

Subject: =?ISO-8859-1?Q?=D3=CA=BC=FE=CA=BE=C0=FD?=

X-mailer: FoxMail 3.1 [cn]

Mime-Version: 1.0

Content-Type: text/plain; charset="GB2312"

Content-Transfer-Encoding: 8bit

Message-ID: <G1BRHJ03.V07@smtp2.ptt.js.cn>

您好!

這是一個郵件的小示例

QUIT

+OK Pop server at <mail2.china.com> signing off.

以下對幾個常用的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 更新 退出

 
用PHP實現POP3郵件的收取
POP協議簡介  本文簡要說明了通過POP3協議收取郵件、MIME郵件的解碼的原理;針對收取和MIME解碼,提供了兩個實用的PHP類,並提供了使用的樣例。分爲郵件收取、MIME解碼兩個部分。這裏我們先向您介紹郵件的收取,解...查看完整版>>用PHP實現POP3郵件的收取
 
用PHP實現POP3郵件的收取(三)
應用實例  POP3收取郵件的類在前面的文章中已經給大家做了詳細的介紹,下面我們來看看如何應用這個類:  <?  include("pop3.inc.php");  $host="pop.china.com";  $user="boss_ch";  $pass="026007";...查看完整版>>用PHP實現POP3郵件的收取(三)
 
用PHP實現POP3郵件的收取(二)
用PHP實現POP3收取郵件的類  現在讓我們來用PHP實現一個通過POP3協議收取信件的類吧,這個類中所用到的一些sock操作的函數,不另做特殊說明,請參考php的有關資料。通過這個實例,相信你也會和我一樣,感覺到PHP中...查看完整版>>用PHP實現POP3郵件的收取(二)
 
用PHP實現POP3郵件的收取(一)
POP協議簡介  本文簡要說明了通過POP3協議收取郵件、MIME郵件的解碼的原理;針對收取和MIME解碼,提供了兩個實用的PHP類,並提供了使用的樣例。分爲郵件收取、MIME解碼兩個部分。這裏我們先向您介紹郵件的收取,解...查看完整版>>用PHP實現POP3郵件的收取(一)
 
用PHP實現POP3郵件的解碼(二)
MIME 編碼方式簡介  Subject: =?gb2312?B?xOO6w6Oh?=  這裏是郵件的主題,可是因爲編碼了,我們看不出是什麽內容,其原來的文本是:“你好!”我們先看看 MIME 編碼的兩種方法。  對郵件進行編碼最初的原因是因...查看完整版>>用PHP實現POP3郵件的解碼(二)
 
用PHP實現POP3郵件的解碼(一)
初步認識郵件的源文件  本文簡要說明了通過POP3協議收取郵件、MIME郵件的解碼的原理;針對收取和MIME解碼,提供了兩個實用的PHP類,並提供了使用的樣例。分爲郵件收取、MIME解碼兩個部分。我們已經向您介紹過了郵件...查看完整版>>用PHP實現POP3郵件的解碼(一)
 
用PHP實現POP3郵件的解碼(三)
實現 MIME 解碼的類  該類實現解碼的方法是 decode($head=null,$body=null,$content_num=-1),爲了處理上的方便,要求輸入的是兩個字符數組,在我們的上篇中,所用到的POP類所收取得到的就是兩個這樣的數組,一個是...查看完整版>>用PHP實現POP3郵件的解碼(三)
 
運用C#實現POP3郵件接收程序
微軟的VS.Net開發工具推出已有一段時日了,其中的那門新語言C#也日漸爲大家所熟悉並接受。C#作爲一門新興的語言相信具有傳統語言不可比擬的優越性,特別是在網絡應用方面,開發者更是感覺到了C#的強大功能。所以本文...查看完整版>>運用C#實現POP3郵件接收程序
 
使用PHP的Socket寫的POP3類
查看 POP3/SMTP 協議的時候想嘗試一下自己寫一個操作類,核心沒啥,就是使用 fsockopen ,然後寫入/接收數據,只實現了最核心的部分功能,當作是學習 Socket 操作的練手。其中參考了 RFC 2449和一個國外的簡單Web郵件...查看完整版>>使用PHP的Socket寫的POP3類
 
 
回到王朝網路首頁