page_adsence

2011年10月7日金曜日

PEAR mailのsendに関して

CcやBccに送る場合にheaderにCcやBccのアドレスを含めるだけでは送れない。
なので全てsendの第一引数に配列か宛先をカンマ区切りで結合した形で入れないといけないのですが、
カンマ区切りで文字列結合した際に、Ccは問題なく送信できてるんですが、Bccがうまくいかないという現象があった。
カンマ区切りの文字列ではなく、配列で渡した場合は特に問題なく送れたので
とりあえずそっちで対応することにした。

送れないバージョン

$to      = 'hogeTo@mail.com, fugaTo@mail.com';
$cc      = 'hogeCc@mail.com, fugaCc@mail.com';
$bcc     = 'hogeBcc@mail.com, fugaBcc@mail.com';
$from    = 'from@mail.com';
$subject = 'test mail subject';
$body    = 'test mail body';

$mime    = new Mail_Mime("\r\n");
$body    = mb_convert_encoding($body, 'ISO-2022-JP');
$subject = mb_encode_mimeheader($subject, 'ISO-2022-JP', 'B', "\r\n");

$headers = array(
  'To'      => $to,
  'Cc'      => $cc,
  'Bcc'     => $bcc,
  'From'    => $from,
  'Subject' => $subject,
);

$to = implode(',', array($to, $cc, $bcc));

$mail = Mail::factory($mailSystem, $params);
$mail->send($to, $headers, $body);

送れるバージョン

$to  = array('hogeTo@mail.com', 'fugaTo@mail.com');
$cc  = array('hogeCc@mail.com', 'fugaCc@mail.com');
$bcc = array('hogeBcc@mail.com', 'fugaBcc@mail.com');

$from    = 'from@mail.com';
$subject = 'test mail subject';
$body    = 'test mail body';

$mime    = new Mail_Mime("\r\n");
$body    = mb_convert_encoding($body, 'ISO-2022-JP');
$subject = mb_encode_mimeheader($subject, 'ISO-2022-JP', 'B', "\r\n");

$headers = array(
  'To'      => implode(",", $to),
  'Cc'      => implode(",", $cc),
  'Bcc'     => implode(",", $bcc),
  'From'    => $from,
  'Subject' => $subject,
);

$to = array_merge($to, $cc, $bcc);

$mail = Mail::factory($mailSystem, $params);
$mail->send($to, $headers, $body);