PEAR::Mail::send()の第二引数$headerについて
PEARパッケージのMailクラスを使い、メール送信する基本形
<? require_once "Mail.php"; $params = array( 'host' => '127.0.0.1', 'port' => '25', 'auth' => false, 'username' => '', 'password' => '', 'persist' => TRUE, // TRUE:配信毎に接続を切らない。 ); $headers['From'] = $from; $headers['To'] = $to_address; $headers['Cc'] = $cc_address; $headers['Subject'] = $title; $mailObj = Mail::factory("smtp", $params); $ret = $mailObj->send($to_address, $header, $body); if(PEAR::isError($ret)) { die("エラーメッセージ:".$ret->getMessage()); } ?>
この例では、Ccを$headerに指定しているものの、実際には$to_addressにしか飛ばない。
mb_send_mail()とは異なり、第一引数($recipients)にCc、Bccを含めた全ての宛先を指定しなければならない。
(配列形式orカンマ区切りで)
» Description
PEAR's Mail package defines an interface for implementing mailers under the PEAR hierarchy. It also provides supporting functions useful to multiple mailer backends. Currently supported backends include: PHP's native mail() function, sendmail, and SMTP. This package also provides a RFC822 email address list validation utility class.
指定された全てのアドレスに対して、同じ連想配列の$headerをヘッダ情報として見せる仕様になっている。
また、$paramsはSMTPから送信する際に、必要なパラメータであり、SMTP認証を使用するときはauth=>TRUEとして、それ以下の情報も記述する。
また、日本語でHTMLメールを送るなど、オプショナルバージョンは以下
<? require_once "Mail.php"; mb_language('Japanese'); mb_internal_encoding(SYSTEM_CHARSET); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $title = mb_convert_kana($title,"KV"); $title = mb_convert_encoding($title, 'ISO-2022-JP', 'auto'); mb_internal_encoding('ISO-2022-JP'); $title = mb_encode_mimeheader($title, 'ISO-2022-JP'); mb_internal_encoding(SYSTEM_CHARSET); $body = mb_convert_kana($body,"KV"); $body = mb_convert_encoding($body, 'JIS', 'auto'); $params = array( 'host' => '127.0.0.1', 'port' => '25', 'auth' => false, 'username' => '', 'password' => '', 'persist' => TRUE, // TRUE:配信毎に接続を切らない。 ); $headers['From'] = $from; $headers['To'] = $to_address; $headers['Cc'] = $cc_address; $headers['Return-Path'] = $ERROR //bounceされた場合の飛び先; $headers['Subject'] = $title; $headers['MIME-Version'] = '1.0'; $headers['Content-Type'] = 'multipart/alternative; boundary="1000000000"'; $mailObj = Mail::factory("smtp", $params); $ret = $mailObj->send($to_address, $header, $body); if(PEAR::isError($ret)) { die("エラーメッセージ:".$ret->getMessage()); } ?>
HTMLメールを送る場合は、$bodyの頭に、
--1000000000 Content-Type: text/html; charset=iso-2022-jp Content-Transfer-Encoding: 7bit
と付けてあげればよい。
HTML非対応の受け手のために、
multipart/alternative形式にして、
--1000000000 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit
以下、平文
としておけば、非対応の人にはtxt形式で表示されるので親切。