用PHP發送MIME郵件(一)

 
作者:Kartic Krishnamurthy 譯者:limodou



  已經厭倦了給你的朋友和客戶發送那些單調乏味的文本通知和信件了嗎?曾經考慮過發送附件或在郵中

嵌入HTML吧。



  答案就是MIME。接下來的幾頁解釋了MIME的基礎知識,創建符合MIME的信息,然後用一個可以工作的PHP 類結束,這個類實現了發送符合MIME郵件。注意對調用腳本,調用者等等的引用表示使用了將要開發的類的腳本,客戶程序/MUA等等表示郵件閱讀的客戶程序或郵件使用代理程序。





一些MIME基礎

  MIME表示多用途Internet郵件擴允協議。MIME擴允了基本的面向文本的Internet郵件系統,以便可以在

消息中包含二進制附件。



  MIME利用了一個事實就是,RFC 822在消息體的內容中做了一點限制:唯一的限制就是隻能使用簡單的

ASCII
文本。所以,MIME信息由正常的Internet文本郵件組成,文本郵件擁有一些特別的符合RFC 822的信息

頭和格式化過的信息體(用ASCII 的子集來表示的附件)。這些MIME頭給出了一種在郵件中表示附件的特別

的方法。



MIME
信息的剖析

  一個普通的文本郵件的信息包含一個頭部分(To: From: Subject: 等等)和一個體部分(Hello Mr.,

等等)。在一個符合MIME的信息中,也包含一個信息頭並不奇怪,郵件的各個部分叫做MIME段,每段前也綴

以一個特別的頭。MIME郵件只是基於RFC 822郵件的一個擴展。然而它有着自已的RFC規範集。





頭字段

  MIME頭根據在郵件包中的位置,大體上分爲MIME信息頭和MIME段頭。(譯者:MIME信息頭指整個郵件

的頭,而MIME段頭只每個MIME段的頭。)



MIME
信息頭有:



MIME-Version:

這個頭提供了所用MIME的版本號。這個值習慣上爲1.0

Content-Type:

它定義了數據的類型,以便數據能被適當的處理。有效的類型有:textimageaudiovideo

applications
multipartmessage。注意任何一個二進制附件都應該被叫做application/octet-

stream
。這個頭的一些用例爲:image/jpg, application/msworkmultipart/mixed,這只是很少的

一部分。

Content-Transfer-Encoding:

這是所有頭中最重要的一個,因爲它說明了對數據所執行的編碼方式,客戶/MUA 將用它對附件進行解

碼。對於每個附件,可以使用7bit8bitbinary quoted-printablebase64custom中的一種編

碼方式。7bit編碼是用在US ASCII字符集上的常用的一種編碼方式,也就是,保持它的原樣。8bit

binary
編碼一般不用。對人類可讀的標準文本,如果傳輸要經過對格式有影響的網關時對其進行保護,

可以使用quoted printable Base64是一種通用方法,在需要決定使用哪一種編碼方法時,它提供了

一個不用費腦子的選擇;它通常用在二進制,非文本數據上。注意,任何非7bit 數據必須用一種模式

編碼,這樣它就可以通過Internet郵件網關!

Content-ID:

如果Content-Typemessage/external-bodymultipart/alternative時,這個頭就有用了。它超出了本文的範圍。

Content-Description:

這是一個可選的頭。它是任何信息段內容的自由文本描述。描述必須使用us-ascii碼。

Content-Disposition:

一個試驗性的頭,它用於給客戶程序/MUA提供提示,來決定是否在行內顯示附件或作爲單獨的附件。

  MIME段頭(出現在實際的MIME附件部分的頭),除了MIME-Version頭,可以擁有以上任何頭字段。如果一個MIME頭是信息塊的一部分,它將作用於整個信息體。例如,如果Content-Transfer-Encoding顯示在信息(指整個信息)頭中,它應用於整個信息體,但是如果它顯示在一個MIME段裏,它"只能"用於那個段中。

用PHP發送MIME郵件(二)
 
用PHP發送MIME郵件(三)
 
用PHP發送MIME郵件(四)
 
 
 
發佈了8 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章