PHP email從很早以前就開始被廣泛使用了,作為一種協議,它在方便快捷地進行郵件通信上顯得尤為重要。在開發網站的時候,我們有時候會用到有關PHP email的功能,比如將某些郵件抄送給相關人員,這就需要我們比較熟練地運用相關代碼。
不難想象,當我們有多個接收者、多個抄送人甚至多個密抄人時,為了實現抄送功能,必須得寫相應的代碼。PHP email支持抄送的方法如下:
$to = '收件人郵箱'; $subject = '郵件標題'; $message = '郵件內容'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Cc: myboss@example.com' . "\r\n" . 'Bcc: myboss@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers);在上述代碼中,Cc表示抄送(Carbon Copy),Bcc表示密送(Blind Carbon Copy),它們的使用方法和發件人可以一起放入郵件頭中,代碼中額外增加了一個Headers變量,它用于表示郵件頭信息。實現郵件抄送和密抄的方法也有多種,可以在Cc和Bcc中加入一個數組,每個數組元素分別表示一個郵箱。代碼如下:
$to = '收件人郵箱'; $subject = '郵件標題'; $message = '郵件內容'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Cc: ' . implode(",", $cc_list) . "\r\n" . 'Bcc: ' . implode(",", $bcc_list) . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers);其中,$cc_list和$bcc_list分別表示抄送和密抄的郵箱地址數組。 值得注意的是,在進行抄送的過程中,有時會遇到一個問題——抄送的郵箱地址沒能正常顯示。這時候我們可以使用“base64編碼”來解決這個問題。代碼如下:
mb_internal_encoding("UTF-8"); $subject = mb_encode_mimeheader('郵件標題', 'UTF-8', 'B'); $to = '收件人郵箱'; $cc = '抄送郵箱'; $bcc = '密抄郵箱'; $body = '郵件內容'; $headers = "MIME-Version: 1.0\r\n" . "Content-Type: text/plain;charset=utf-8\r\n" . "Content-Transfer-Encoding: base64\r\n" . "From: 發件人<發件人郵箱>\r\n" . "Cc: =?UTF-8?B?" . base64_encode(mb_convert_encoding($cc, "GBK", "UTF-8")) . "?=<抄送郵箱>\r\n" . "Bcc: =?UTF-8?B?" . base64_encode(mb_convert_encoding($bcc, "GBK", "UTF-8")) . "?=<密抄郵箱>\r\n" . "X-Mailer: PHP/" . phpversion() . "\r\n" . "X-Priority: 3\r\n" . "X-Unsent: 1\r\n" . "Return-Path:<郵件回復地址>"; $body = chunk_split(base64_encode($body)); mail($to, $subject, $body, $headers);在上述代碼中,我們進行了一些特殊處理,首先是將郵件主題使用了mb_encode_mimeheader轉成mime格式(RFC 2047)。然后,對Cc和Bcc中的中文字符進行了base64編碼,以正確地顯示在郵件中。 總的來說,在使用抄送和密抄的方法時,需要多加考慮,在遇到問題的時候需要進行一定的處理,這樣才能確保PHP email的使用效果。