PHP傳送郵件的小程式很簡單,不過有些需要注意的地方。先上程式碼:
02 |
$to = "gonnsai@163.com" ;
|
05 |
$date = date ( "Y年m月d日" );
|
07 |
$headers = `MIME-Version: 1.0` . "
" ;
|
08 |
$headers .= `Content-type: text/html; charset=utf-8` . "
" ;
|
09 |
$headers .= "To: $to
" ;
|
10 |
$headers .= "Cc: 252211974@qq.com
" ;
|
11 |
$headers .= `From: gonnsai@163.com` . "
" ;
|
14 |
$subject = "=?UTF-8?B?" . base64_encode ( $subject ). "?=" ;
|
16 |
$content = `親愛的` . "$user" . `:` . `<br />` ;
|
18 |
$content .= "感謝您註冊珠海生活圈,精彩的生活從珠海生活圈開始!" . `<br />` ;
|
19 |
$content .= "在珠海生活圈,您可以:" . `<br />` ;
|
20 |
$content .= "查詢珠海的商家情況,方便您生活與娛樂。" . `<br />` ;
|
21 |
$content .= "瞭解最近珠海舉行的活動,讓您的生活更加豐富。" . `<br />` ;
|
22 |
$content .= "瀏覽新聞熱點,擴充套件知識面。" . `<br />` ;
|
24 |
$content .= "珠海生活圈 -- 為建成珠海最大的商家資料庫而不斷努力著。 " . `<a href="http://www.zhuhailife.net" target="_blank">www.zhuhailife.net</a>` . `<br />` ;
|
26 |
$content .= "珠海生活圈團隊" . `<br />` ;
|
27 |
$content .= "$date" . `<br />` ;
|
29 |
$result = mail( $to , $subject , $content , $headers );
|
有幾個需要注意的地方。如果上面的程式碼沒有 $subject = “=?UTF-8?B?”.base64_encode($subject).”?=”; 這麼一句,你會發現郵件的標題是亂碼,而郵件正文卻是正確的。郵件頭需要先用函式base64_encode(),就是使用 MIME base64 對資料進行編碼。標題字串前加編碼型別例如: =?UTF-8?B?。
還有郵件的型別設定為$headers = `MIME-Version: 1.0` . ”
“;。
摘wiki的解釋:多用途網際網路郵件擴充套件(MIME,Multipurpose Internet Mail Extensions)是一個網際網路標準,它擴充套件了電子郵件標準,使其能夠支援非ASCII字元、二進位制格式附件等多種格式的郵件訊息。這個標準被定義在 RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 由RFC 822轉變而來的RFC 2822,規定電子郵件標準並不允許在郵件訊息中使用7位ASCII字符集以外的字元。正因如此,一些非英語字元訊息和二進位制檔案,影像,聲音等非文字消 息都不能在電子郵件中傳輸。MIME規定了用於表示各種各樣的資料型別的符號化方法。 此外,在全球資訊網中使用的HTTP協議中也使用了MIME的框架。
MIME是通過標準化電子郵件報文的頭部的附加領域(fields)而實現的;這些頭部的附加領域,描述新的報文型別的內容和組織形式。
$headers .= `Content-type: text/html; charset=utf-8` . ”
“; 當制定型別為 html的時候,郵件正文就可以使用 HTML 的標籤了。
幾種常見的型別:
- text/plain(純文字)
- text/html(HTML文件)
- application/xhtml+xml(XHTML文件)
- image/jpeg(JPEG影像)【PHP中為:image/pjpeg】
- image/gif(GIF影像)
- image/png(PNG影像)【PHP中為:image/x-png】
- video/mpeg(MPEG動畫)
- application/pdf(PDF文件)
- application/msword(Microsoft Word檔案)
- application/octet-stream(任意的二進位制資料)
- application/x-www-form-urlencoded(使用HTTP的POST方法提交的表單)
- multipart/form-data(同上,但主要用於表單提交時伴隨檔案上傳的場合)
此外,尚未被接受為正式資料型別的subtype,可以使用x-開始的獨立名稱(例如application/x-gzip)。vnd-開始的固有名稱也可以使用(例:application/vnd.ms-excel)。
parameter可以用來指定附加的資訊,更多情況下是用於指定text/plain和text /htm等的文字編碼方式的charset引數。MIME根據type制定了預設的subtype,當客戶端不能確定訊息的subtype的情況下,訊息 被看作預設的subtype進行處理。Text預設是text/plain,Application預設是application/octet- stream而Multipart預設情況下被看作multipart/mixed。
本文轉自黃聰部落格園部落格,原文連結:http://www.cnblogs.com/huangcong/archive/2011/05/19/2050616.html,如需轉載請自行聯絡原作者