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形式で表示されるので親切。