用PHP实现POP3邮件的解码(一)

初步认识邮件的源文件

本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了使用的样例。分为邮件收取、MIME解码两个部分。我们已经向您介绍过了邮件的收取,现在让我们来为您介绍本文的解码部。

在上一篇里,我们已经完成了一个用PHP通过POP3收取邮件的实例,可是在使用这个类的时候,相信你已经看到了,很多的邮件收下来是一堆乱码,自己根本看不懂!是的。现在的邮件大部分都已经经过了编码,需要一个解码的过程才能变成我们习惯的文字、图片、或是其它的附件。

邮件的源文件

首先,我们来看一段简单的邮件的源文件:(在Foxmail中,选中邮件,点选“查看源文件”就会看到这样的些内容了)

From: <boss_ch@netease.com>

To: <boss_ch@china.com>

Subject: =?gb2312?B?xOO6w6Oh?=

Date: Sun, 8 Oct 2000 20:28:45 +0800

MIME-Version: 1.0

Content-Type: multipart/alternative;

boundary="----=_NextPart_000_0007_01C03166.5B1E9510"

X-Priority: 3

X-MSMail-Priority: Normal

X-Mailer: Microsoft Outlook Express 5.00.2919.6700

X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700

This is a multi-part message in MIME format.

------=_NextPart_000_0007_01C03166.5B1E9510

Content-Type: text/plain;

charset="gb2312"

Content-Transfer-Encoding: base64

w7vT0MLSwuuwyaO/DQo=

------=_NextPart_000_0007_01C03166.5B1E9510

Content-Type: text/html;

charset="gb2312"

Content-Transfer-Encoding: base64

PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv

L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWdi

MjMxMiIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNS4w

MC4yOTIwLjAiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZTEU+DQo8L0hFQUQ+DQo8Qk9E

WSBiZ0NvbG9yPSNmZmZmZmY+DQo8RElWPjxGT05UIHNpemU9Mj7Du9PQwtLC67DJo788L0ZPTlQ+

PC9ESVY+PC9CT0RZPjwvSFRNTD4NCg==

------=_NextPart_000_0007_01C03166.5B1E9510-

这样的一段邮件,我想没有人能看得懂的。不要急,我们来仔细看看这些内容。

From: <boy@netease.com>

To: <boss_ch@china.com>

这个是好理解的,邮件由boy@netease.com发送,收件人是boss_ch@china.com,这些标签的含义我们基本可从字面上理解到,像Date:Sun, 8 Oct 2000 20:28:45 +0800表示的是时间,X-Priority: 3表示的是邮件的优先级,X-Mailer: Microsoft Outlook Express 5.00.2919.6700表示的是邮件发送器的名字,这里用的是Outllook 5,不过,这些东西跟邮件的内容是没有很大关系的。我们不需要深究。

 
用PHP实现POP3邮件的收取
现在让我们来用PHP实现一个通过POP3协议收取信件的类吧,这个类中所用到的一些sock操作的函数,不另做特殊说明,请参考php的有关资料。通过这个实例,相信你也会和我一样,感觉到PHP中对于sock操作的灵活、方便和功能...查看完整版>>用PHP实现POP3邮件的收取
 
C#中对POP3邮件解码
Base64和下面将要介绍的Quoted-Printable都属于MIME(多部分( multi-part)、多媒体电子邮件和 WWW 超文本的一种编码标准,用于传送诸如图形、声音和传真等非文本数据)。MIME定义在RFC1341中。 Base64是现今在互联...查看完整版>>C#中对POP3邮件解码
 
C#中对POP3邮件解码
Base64和下面将要介绍的Quoted-Printable都属于MIME(多部分( multi-part)、多媒体电子邮件和 WWW 超文本的一种编码标准,用于传送诸如图形、声音和传真等非文本数据)。MIME定义在RFC1341中。 Base64是现今在互联...查看完整版>>C#中对POP3邮件解码
 
用PHP实现POP3邮件的解码(三)
实现 MIME 解码的类  该类实现解码的方法是 decode($head=null,$body=null,$content_num=-1),为了处理上的方便,要求输入的是两个字符数组,在我们的上篇中,所用到的POP类所收取得到的就是两个这样的数组,一个是...查看完整版>>用PHP实现POP3邮件的解码(三)
 
用PHP实现POP3邮件的解码(二)
MIME 编码方式简介  Subject: =?gb2312?B?xOO6w6Oh?=  这里是邮件的主题,可是因为编码了,我们看不出是什么内容,其原来的文本是:“你好!”我们先看看 MIME 编码的两种方法。  对邮件进行编码最初的原因是因...查看完整版>>用PHP实现POP3邮件的解码(二)