日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php解析multilpart,使用PHP语言实现POP3邮件的解码

發布時間:2025/3/19 php 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php解析multilpart,使用PHP语言实现POP3邮件的解码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用PHP語言實現POP3郵件的解碼

時間:2009-02-17 來源:未知 作者:小遠 點擊:次

初步認識郵件的源文件 本文簡要說明了通過pop3協議收取郵件、mime郵件的解碼的原理;針對收取和mime解碼,提供了兩個實用的php類,并提供了使用的樣例。分為郵件收

初步認識郵件的源文件

本文簡要說明了通過pop3協議收取郵件、mime郵件的解碼的原理;針對收取和mime解碼,提供了兩個實用的php類,并提供了使用的樣例。分為郵件收取、mime解碼兩個部分。我們已經向您介紹過了郵件的收取,現在讓我們來為您介紹本文的解碼部。

在上一篇里,我們已經完成了一個用php通過pop3收取郵件的實例,可是在使用這個類的時候,相信你已經看到了,很多的郵件收下來是一堆亂碼,自己根本看不懂!是的。現在的郵件大部分都已經經過了編碼,需要一個解碼的過程才能變成我們習慣的文字、圖片、或是其它的附件。

郵件的源文件

首先,我們來看一段簡單的郵件的源文件:(在foxmail中,選中郵件,點選“查看源文件”就會看到這樣的些內容了)

from:

to:

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:

to:

這個是好理解的,郵件由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,不過,這些東西跟郵件的內容是沒有很大關系的。我們不需要深究。

mime 編碼方式簡介

mime 編碼方式簡介

subject: =?gb2312?b?xoo6w6oh?=

這里是郵件的主題,可是因為編碼了,我們看不出是什么內容,其原來的文本是:“你好!”我們先看看 mime 編碼的兩種方法。

對郵件進行編碼最初的原因是因為 internet 上的很多網關不能正確傳輸8 bit 內碼的字符,比如漢字等。編碼的原理就是把 8 bit 的內容轉換成 7 bit 的形式以能正確傳輸,在接收方收到之后,再將其還原成 8 bit 的內容。

mime 是“多用途網際郵件擴充協議”的縮寫,在 mime 協議之前,郵件的編碼曾經有過 uuencode 等編碼方式 ,但是由于 mime 協議算法簡單,并且易于擴展,現在已經成為郵件編碼方式的主流,不僅是用來傳輸 8 bit 的字符,也可以用來傳送二進制的文件 ,如郵件附件中的圖像、音頻等信息,而且擴展了很多基于mime 的應用。從編碼方式來說,mime 定義了兩種編碼方法base64與qp(quote-printable) :

base 64 是一種通用的方法,其原理很簡單,就是把三個byte的數據用 4 個byte表示,這樣,這四個byte 中,實際用到的都只有前面6 bit,這樣就不存在只能傳輸 7bit 的字符的問題了。base 64的縮寫一般是“b”,像這封信中的subject 就是用的 base64 編碼。

另一種方法是qp(quote-printable) 方法,通常縮寫為“q”方法,其原理是把一個 8 bit 的字符用兩個16進制數值表示,然后在前面加“=”。所以我們看到經過qp編碼后的文件通常是這個樣子:=b3=c2=bf=a1=c7=e5=a3=ac=c4=fa=ba=c3=a3=a1。

在 php 里,系統有兩個函數可以很方便地實現解碼:base64_decode()與quoted_printable_decode(),前者可用于base64 編碼的解碼,后者是用于 qp 編碼方法的解碼。

現在我們再來看看subject: =?gb2312?b?xoo6w6oh?= 這一主題的內容,這不是一段完整的編碼,只有部分是編碼了的,這個部分用 =? ?= 兩個標記括起來,=? 后面說明的是這段文字的字符集是 gb2312 ,然后一個 ? 后面的一個 b 表示的是用的 base64 編碼。通過這段分析,我們來看一下這個 mime 解碼的函數:(該函數由 phpx.com 站長 sadly 提供,本人將其放入一個類中,并做了少量的修改,在此致謝)

------分隔線----------------------------

頂一下

(7)

63.6%

踩一下

(4)

36.4%

------分隔線----------------------------

總結

以上是生活随笔為你收集整理的php解析multilpart,使用PHP语言实现POP3邮件的解码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。