CakePHP のコンポーネントの Qdmail はメールを送るのに非常に便利なコンポーネントです。この Qdmail を使用してメールを一斉送信する方法です。

本家の方に複数の宛先宛に個別にメールを送る方法が紹介されています。
個別アドレス分離機能(一斉送信時) – Qdmail – PHP::Mail Library , Quick and Detailed for Multibyte

上記ページのコメントでも指摘されていますが、このサンプルだと1番目のメールアドレスに2番目のメールアドレスが宛名として送信されてしまいます。一斉送信は間違えるとメールアドレス漏洩などの問題になりますので、実装の際は注意が必要です。

下記の送信先を指定している部分の指定の仕方が間違っているようです。

$to = array( 'address1@example.com' , 'address2@example.com' , 'address3@example.com' , 'address4@example.com' );

送信先にはメールアドレスと宛名のペアを指定しないとうまくいきません。

$emails = array(
    array("hoge@example.com", "HOGE"),
    array("foo@example.com", "FOO"),
);
$this->Qdmail->to($emails);
$this->Qdmail->subject($data["Email"]["subject"]);
$this->Qdmail->from(ADMIN_MAIL, ADMIN_NAME);
$this->Qdmail->text($data["Email"]["body"]);
$this->Qdmail->toSeparate(true);
$rs = $this->Qdmail->send();

下から2行目の $this->Qdmail->toSeparate(true); を指定すると複数の送信先にそれぞれ個別にメールを送信してくれます。

関連する投稿