程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 用PHP發送MIME郵件(二)

用PHP發送MIME郵件(二)

編輯:關於PHP編程

作者:Kartic Krishnamurthy 譯者:limodou

"好,如何創建符合MIME的信息呢?"
  通過上面的一般性的描述,讓我們現在看一下所謂的MIME信息到底是什麼!


最簡單的MIME信息
  這個信息沒有任何段,也就是,沒有附件。然而,因為它是一個MIME消息,它必須有必要的頭。


From: php(做為現在的主流開發語言)@php(做為現在的主流開發語言).net
To: Alex (the Great) <[email protected]>
Subject: Bucephalus
MIME-Version: 1.0

Hello Alexander,

Hows Bucephalus doing?

  這裡面沒有什麼,它只是一個簡單的擁有MIME頭的符合RFC-822 的信息(文本郵件)。注意,如果沒有
指定Content-Type頭,則假設為Content-Type: text/plain;charset=us-ascii!當然,它有些簡單,復雜
一些的如下:


From: Alex (the Great) <[email protected]>
To: php(做為現在的主流開發語言)@php(做為現在的主流開發語言).net
Subject: re: Bucephalus
MIME-Version: 1.0
Content-Type: image/jpg;
name=buce.jpg
Content-Transfer-Encoding: base64
Content-Description: Take a look at him yourself

<.....base64 encoded jpg image of Bucephalus...>

  "嗨,但是我想發送一個word文檔和一張我的小狗的圖片在同一封郵件中... !"一個用戶說!如果是真
的,上面的那個例子就太簡單了,並且它沒有足夠的內容來支持愛好者和現代郵件處理方面的需要。實際上,
許多的郵件客戶端軟件甚至不能顯示描述字段!

  這就是我們所面臨的"多部分信息"。


多部分信息(Multipart Messages)
  這個概念允許在一封郵件中發送多條項目。例如,假設Alexander想要給php(做為現在的主流開發語言)@php(做為現在的主流開發語言).net發送一封他的馬的
照片的郵件,同時還附帶有馬的家族圖譜及精彩的說明!這樣一個簡單的要求沒有多部分消息的概念是無法
被滿足的。在這種情況下,我們創建了一個使用Content-Type的信息頭的封裝來支持郵件的不同部分,以便
收信人得到圖片,家族圖譜和精彩的說明!

  Content-Type 頭現在擁有一個"multipart"的值,它表示這是一個完整的郵件信息並且這個頭只封裝了
信息。而且它還有一個"mixed"的子類型(畢竟圖片,家族圖譜和7bit文本信息是不同的類型,對嗎?)。

  讓我們看一下整個圖片看上去象:


From: Alex (the Great) <[email protected]>
To: php(做為現在的主流開發語言)@php(做為現在的主流開發語言).net
Subject: re: Bucephalus
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="XX-1234DED00099A";
Content-Transfer-Encoding: 7bit

This is a MIME Encoded Message

--XX-1234DED00099A
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi php(做為現在的主流開發語言),

Attached you will find my horse, Bucephalus, pedigree chart and photo.

Alex

--XX-1234DED00099A
Content-Type: image/jpg;
name="buce.jpg";
Content-Transfer-Encoding: base64
Content-Description: "A photo of Bucephalus"

<.....base64 encoded jpg image of Bucephalus...>

--XX-1234DED00099A
Content-Type: application/octet-stream;
name="pedigree.doc"
Content-Transfer-Encoding: base64
Content-Description: "Pedigree Chart of the great horse"

<.....base64 encoded doc (pedigree.doc) of Bucephalus...>

--XX-1234DED00099A--

  喲,看上去很復雜,不是嗎?不管怎樣,讓我們浏覽一遍細節吧:

如果你注意到了在MIME信息頭中的Content-Transfer-Encoding,為"7bit"。因為Content-Type為
multipart/mixed,編碼應該是7bit,8bit或二進制中的一種,7bit是一種廣泛使用的格式。
象這樣一條信息包含了多種信息。客戶程序是如何知道JPG圖片,文檔和普通文本之間的區別呢?你會
注意到在Content-Type後面有一個boundary="XX-1234DED00099A"參數。這個值用來分離郵件中的不同
部分。它叫做MIME邊界標記。邊界標記的值必須盡可能的唯一,以免在超出郵件范圍時發生混亂。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved