如果只是要單純的寄送信件,PHP內附的mail()就夠用了,
但還是有使用上的限制,例如:寄送HTML、副檔等,這時可以利用PEAR的Mail了。
首先先到官網下載套件吧
PEAR::Mail
PEAR::Mail_Mime
Mail:傳送 email 的介面
Mail_Mime:用來產生 multipart messages
Mail寄送說明:
object &factory (string $backend [, array $params = array()])
‧$backend有三種類型:"mail","smtp","sendmail"。
‧$param 後端程式所需的參數。
‧mail 不需參數
‧sendmail
$param["sendmail_path"] sendmail 程式所在路徑,Default is /usr/bin/sendmail
$param["sendmail_args"] sendmail 程式所需參數
‧smtp
$param["host"] SMTP 伺服器位置,Default is localhost
$param["port"] SMTP 連接埠,Default is 25
$param["auth"] SMTP 是否使用認證
$param["username"] SMTP 認證使用者
$param["password"] SMTP 認證密碼
Mail_Mime寄送說明:
Mail_Mime 這個類別的最主要功用,就是用來產生 multipart messages。
使用 Mail_Mime 製作出 multipart messages 之後,再使用 Mail::send() 來傳送。
產生 multipart messages 的步驟有:
1.使用 Mail_mime() 建立新的 Mail_mime 物件(constructor)。
2.至少要使用 setTXTBody(), setHTMLBody(), addHTMLImage() 或 addAttachment()四者其中之一建立內文或附檔。(當然通常的情況不只使用一個囉)
3.使用 get() 傳回內文。
4.使用 headers() 傳回檔頭。
5.利用傳回的內文與檔頭丟給 Mail::send() 送信。
Mail_mime::Mail_mime() 用來產生一個新的 Mail_Mime 物件。
語法:Mail_mime Mail_mime ([string $crlf = "\r\n"])
$crlf 通常可以不用指定。
Mail_mime::setTxtBody() 設定郵件中的純文字部分。
語法:mixed setTxtBody (string $data [, boolean $isfile = false])
$data 可以是檔名或字串
Mail_mime::setHTMLBody() 設定郵件中的超文件部分。
語法:mixed setHTMLBody (string $data [, boolean $isfile = false])
$data 可以是檔名或字串。
Mail_mime::addHTMLImage() 內嵌圖檔於超文件之中。
語法:mixed addHTMLImage (string $data,
string [$c_type = 'application/octet-stream']
[, string $name = '' [, boolean $isfile = true]])
$data 可以是圖檔檔名或本身就是圖檔資料。
$c_type 圖檔的檔案類型,通常不用改。
$name 圖檔的檔名,只有在 $data 本身是圖檔資料時使用。
Mail_mime::addAttachment() 夾帶檔案。
語法:mixed addAttachment (string $data,
string [$c_type = 'application/octet-stream'],
string [$name = ''], boolean [$isfile = true],
string [$encoding = 'base64'])
$data, $c_type, $name 同 addHTMLImage() 的說明。
$encoding 可以指定附加檔所使用的編碼方法,內定 base64。
Mail_mime::&get() 傳回 Mail::send() 用來送信所需的內文($body)。
語法:string &get (array [$param = null])
注意~必須已經有加入內文或附檔才可呼叫 get()。
$param["text_encoding"] 純文字的編碼方法。
$param["html_encoding"] 超文件的編碼方法。
$param["7bit_wrap"] 指定每行最多字元數。
$param["text_charset"] 指定純文字的字元編碼。
$param["html_charset"] 指定超文件的字元編碼。
$param["head_charset"] 指定檔頭的字元編碼。
Mail_mime::&headers() 傳回 Mail::send() 用來送信所需的檔頭($headers)。
語法:array &headers ([array $headerEx = null])
注意~必須呼叫過 get() 才可呼叫 headers()。
$headerEx 為額外的檔頭。
實做筆記:
如果出現亂碼可以加上以下設定
$headers["Content-Type"] = "text/plain; charset=BIG5";
$headers["Subject"] = iconv ("UTF-8","BIG5","測試主題");
沒有留言:
張貼留言