[php]PHPMailerで送信先を複数指定する

使うときは使う。

活用シーン

まあ、PHPMailerを使うといったらメールフォームなわけで。通常は送受信するサイト側のメールアカウント情報と問い合わせした側のメールアドレスがあれば完結する。

大手だとかブレーンが複数いるサイト、問い合わせの対応に全力なサービスだった場合はメールを受けるアドレスが複数上がることがある。

PHPMailerはto、cc、bccの振り分けはもちろん複数のメールアドレスへの送信に対応しているのでその話。

基本形

//to
$mail->addAddress('foo@example.com', mb_encode_mimeheader("受信者名")); 
//cc
$mail->addCC('foo@example.com');
//bcc
$mail->addBCC('foo@example.com');

それぞれこんな書き方になる。受信者名は省略可能なので、()にアドレスだけ入れてしまってもいい。

送信先の追加

$mail->addAddress('foo@example.com');
$mail->addAddress('foo@example.com');
$mail->addAddress('foo@example.com');
$mail->addAddress('foo@example.com');
$mail->addAddress('foo@example.com');

単純。いっぱい書いちゃえばいい。cc、bccでも同じ。

まとめて書きたい場合

送信先を1つ増やす毎に1行増えるのはめんどくさい、ミスったら嫌だ、とかいうこともある。

配列を作ってforeachで回すことができる。

$ccSet = array('01@example.com','02@example.com','03@example.com','04@example.com','05@example.com');

try{
︙
    foreach($ccSet as $value):
        $mail->addCC($value);
    endforeach;
︙
}

宛名までがんばるとこんな感じ。

$bccSet = array(
    '01@example.com' => '01name',
    '02@example.com' => '02name',
    '03@example.com' => '03name',
    '04@example.com' => '04name',
    '05@example.com' => '05name'
);

try{
︙
    foreach($ccSet as $email => $name):
        $mail->addBCC($email, $name);
    endforeach;
︙
}

実用性

基本的にコピペで済ませたいんで、あんまりソースコードはいじりたくない。

なので各所に変数とかforeachとかを予め入れてしまって自分用のテンプレートを作っておいて、変数の宣言のところだけ都度変更するようにしたらいい感じになれると思う。配列自体は中身が1つでも動くわけだし。

そうしておかないと久しぶりに触るときに「どうやるんだっけ」が発生してめんどくさくなる。物によっては宛先をカンマ区切りでぶち込んでOKだったりするから、うろ覚えで混ざっちゃうと無駄にバグらせることになる。

かなり有効だと思う。

コメント

タイトルとURLをコピーしました