2008年7月21日 星期一

PEAR Mail

如果只是要單純的寄送信件,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","測試主題");

沒有留言: