PHPプログラミング

最終更新日:
公開日:

レシピ

Swift Mailer

Swift Mailerで複数の宛先にメールを一括送信する

Swift Mailerライブラリで1つのメールを複数の宛先へ一括送信する方法を解説します。Cc、Bccの設定方法もあわせてご紹介。

この記事のポイント

  • メールを複数のメールアドレスへ一括送信する
  • Cc、Bccを設定する
  • 宛先にメールアドレスとセットで特定の名前も指定する

目次

Swift Mailerで複数の宛先へ一括送信

メールの宛先は必ずしも1つのメールアドレスとは限りません。
「部署」など特定のグループを対象に、複数の宛先へ同じ内容のメールを送信したいケースがあります。
ビジネス用途では情報共有としてCcやBccがよく使われます。

今回はSwift Mailerライブラリで上記のようなケースに対応する方法を解説します。

メール送信の基本的な部分については「Swift Mailerのインストール&メールを送信する」で解説した内容を使用します。

Swift Mailerライブラリの公式サイトはこちら。
Swift Mailer公式サイト(英語)

Note

今回の方法を使うと複数の宛先へメールを一括送信できるため非常に便利ですが、1度に大量のメールを送信するとスパムメールを送信していると判断されてしまう恐れがあります。そのため、1度に指定する宛先の数は10件未満を目安とすることをオススメします。

複数の宛先を設定する

まずは単純に複数の宛先を設定してみましょう。
setToメソッドに渡す配列に、送信したいメールアドレスを全てセットして設定します。

swiftmailer.php

<?php
require_once 'vendor/autoload.php';

// 送信設定
$transport = new Swift_SmtpTransport('localhost', 25);
$transport->setUsername('username');
$transport->setPassword('password');
$mailer = new Swift_Mailer($transport);

// メール作成
$message = new Swift_Message();
$message->setSubject('HTMLメールのテスト');
$message->setFrom(['noreply@gray-code.com' => 'GRAYCODE']);

// 複数の宛先を設定
$message->setTo([
	'taroyamada@sample.com',
	'ken@sample.com',
	'yuko@sample.com'
]);

// メール本文を作成
$message->setBody('複数の宛先を指定したメールのテストです。');

// メール送信
$result = $mailer->send($message);

上記のコードを実行すると、次の3件のメールアドレスへ同じメールが送信されます。

  • taroyamada@sample.com
  • ken@sample.com
  • yuko@sample.com

後から宛先を追加する

同じタイミングで全ての宛先をセットする以外に、addToメソッドを使って後から追加することも可能です。
ただし、こちらのメソッドは1件ずつのみ追加していく形となります。

swiftmailer.php


--- 途中省略 ---

// 複数の宛先を設定
$message->setTo([
	'taroyamada@sample.com'
]);

// 後から宛先を追加
$message->addTo('ken@sample.com');
$message->addTo('yuko@sample.com');

--- 省略 ---

こちらもsetToメソッドで指定した時と同様に、指定したメールアドレスへ同じメールが一括送信されます。

Cc、Bccを設定する

続いて、CcとBccの設定です。

CcはsetCcメソッド、BccはsetBccメソッドを使います。
メールアドレスはsetToメソッドと同様に配列形式で指定します。

swiftmailer.php


--- 途中省略 ---

// 宛先を設定
$message->setTo([
	'taroyamada@sample.com'
]);

// Cc設定
$message->setCc([
	'cc1@sample.com',
	'cc2@sample.com'
]);

// Bcc設定
$message->setBcc([
	'bcc@sample.com'
]);

--- 省略 ---

setToメソッドに後から宛先を追加するaddToメソッドが用意されているように、CcやBccにもそれぞれ後から宛先を追加するメソッドが用意されています。

swiftmailer.php


--- 途中省略 ---

// 宛先を設定
$message->setTo([
	'taroyamada@sample.com'
]);

// Cc設定
$message->setCc([
	'cc1@sample.com',
	'cc2@sample.com'
]);

// 後からCcを追加
$message->addCc('yumiko@sample.com');

// Bcc設定
$message->setBcc([
	'bcc@sample.com'
]);

// 後からBccを追加
$message->addBcc('ayumi@sample.com');

--- 省略 ---

setCcメソッドを使っていない場合でも、addCcメソッドで1件ずつ宛先を指定することが可能です。
通常の宛先やBccについても同様です。

Note

Cc(Carbon Copy)Bcc(Blind Carbon Copy)の違いは、Ccはメールを受信した人全員が参照できるのに対し、Bccは見ることができません。
宛先やCcに指定した人と同じメールを送りたいけど、何らかの都合で受信した人からは見えないようにしたい場合はBccを使います。

宛先にメールアドレスとセットで特定の名前も指定する

送信元と同様に、宛先にもメールアドレスとあわせて氏名やグループ名などを指定することができます。

swiftmailer.php


--- 途中省略 ---

// 複数の宛先を設定
$message->setTo([
	'koheiishido@gmail.com' => 'GRAYCODE運営局'
]);

--- 省略 ---

メーラーによって表示に違いがありますが、例えばGメールでは次のように「To」の欄へ名前が表示されます。

同じ方法でCcやBccにも名前を指定できます。