文章詳情頁
用PHP發送MIME郵件(一)
瀏覽:4日期:2023-12-29 18:06:54
作者: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: 它定義了數據的類型,以便數據能被適當的處理。有效的類型有:text,image,audio,video, applications,multipart和message。注意任何一個二進制附件都應該被叫做application/octet- stream。這個頭的一些用例為:image/jpg, application/mswork,multipart/mixed,這只是很少的 一部分。 Content-Transfer-Encoding: 這是所有頭中最重要的一個,因為它說明了對數據所執行的編碼方式,客戶/MUA 將用它對附件進行解 碼。對于每個附件,可以使用7bit,8bit,binary ,quoted-printable,base64和custom中的一種編 碼方式。7bit編碼是用在US ASCII字符集上的常用的一種編碼方式,也就是,保持它的原樣。8bit 和 binary編碼一般不用。對人類可讀的標準文本,如果傳輸要經過對格式有影響的網關時對其進行保護, 可以使用quoted printable 。Base64是一種通用方法,在需要決定使用哪一種編碼方法時,它提供了 一個不用費腦子的選擇;它通常用在二進制,非文本數據上。注意,任何非7bit 數據必須用一種模式 編碼,這樣它就可以通過Internet郵件網關! Content-ID: 如果Content-Type是message/external-body或multipart/alternative時,這個頭就有用了。它超出了本文的范圍。 Content-Description: 這是一個可選的頭。它是任何信息段內容的自由文本描述。描述必須使用us-ascii碼。 Content-Disposition: 一個試驗性的頭,它用于給客戶程序/MUA提供提示,來決定是否在行內顯示附件或作為單獨的附件。 MIME段頭(出現在實際的MIME附件部分的頭),除了MIME-Version頭,可以擁有以上任何頭字段。如果一個MIME頭是信息塊的一部分,它將作用于整個信息體。例如,如果Content-Transfer-Encoding顯示在信息(指整個信息)頭中,它應用于整個信息體,但是如果它顯示在一個MIME段里,它"只能"用于那個段中。
標簽:
PHP
上一條:用PHP發送MIME郵件(二)下一條:用PHP發送MIME郵件(三)
排行榜