最終更新日:
公開日:
レシピ
Swift Mailer
Swift Mailerのインストール&メールを送信する
PHPのメール送信ライブラリとして有名な「Swift Mailer」。今回はインストールと基本的なメール送信について解説します。
この記事のポイント
- Swift Mailerライブラリでできることが分かる
- Swift Mailerをインストールする
- Swift Mailerを使って基本的なメールを送信してみる
目次
PHPでのメール送信に便利なSwift Mailerライブラリ
今回はPHPのメール送信で広く使われている「Swift Mailer」の基本的なことについて解説します。
システム要件
2017年12月現在、Swift Mailerの最新バージョンは6.0.2。
PHP7.0以降が必須要件です。
また、SwiftMailerライブラリは他ライブラリを使用するため、Composerでのインストールがオススメ。
そのため、Composerが使える環境であることが望ましいです。
Note
Swift Mailerライブラリが使う他ライブラリを具体的に挙げると、Doctrine/Lexer、egulias/EmailValidatorです。
それぞれ単体でインストールして組み合わせることも可能ではありますが非常に手間がかかります。
インストール方法などは公式サイトに記載された方法で進めていきます。
Swift Mailer公式サイト(英語)
どうしてSwift Mailerライブラリを使うの?
PHPには標準でmail関数やmb_send_mail関数などのメールを送信するための関数が用意されています。
なのに、わざわざライブラリを使う意味はあるのでしょうか。
PHPが標準で用意しているメールを送信する関数は非常にシンプルです。
そのため扱いやすくもあり、実際にただのプレーンなテキストメールを送るだけであれば、特にライブラリを使わなくても用が足りてしまいます。
ただし、通常のテキストメール以外にHTML形式のメールを送りたかったり、ファイルを添付して送りたい場合は少し面倒になります。
(できない訳ではありません)
そのため、通常のテキスト形式以外のメールを送りたい場合には、PHPライブラリを活用した方が簡単に実装することができ、開発効率もグッと上がります。
この利便性、効率の良さがSwift Mailerライブラリを使う理由です。
Swift Mailerにできること
続いて、Swift Mailerにできることを紹介します。
- 簡単なメール送信
- HTMLメールの送信(画像埋め込みも可)
- 複数の送信元、宛先を簡単に指定
- Cc、Bccの指定
- ファイルの添付(複数も可)
- 添付ファイルのファイル名を変更
- メール本体、ヘッダーの詳細な設定
- SSL対応
- メール送信失敗したメールアドレスの取得
これらのことがPHP標準の関数よりも簡単に行うことができます。
詳しい送信方法については次回以降で解説していきます。
反対に、Swift Mailerライブラリを使っても数千件、数万件といった多数の宛先へのメール一括配信は難しいです。
もし会員へのメルマガ配信などを行いたい場合は、「Amazon SES」などのソリューションを使用した方が確実にメールを届けることができるのでオススメ。
Swift Mailerをインストール
まずはインストールから。
インストールする方法はComposerを使った方法と、Githubからファイルをダウンロードしてくる方法の2つ。
それぞれ順に解説します。
Composerでインストール
Composerを使ったインストールは、公式サイトの「Installation」ページで紹介されています。
Installation – Swift Mailer公式サイト(英語)
cdコマンドなどで、あらかじめインストールしたい場所へ移動してから、次のコマンドを実行します。
コマンド入力例
composer require swiftmailer/swiftmailer
管理者権限が必要な場合は、composerコマンドの前にsudoなどを付けて実行してください。
管理者権限でのコマンド入力例
sudo composer require swiftmailer/swiftmailer
無事にインストール完了すると、次のようなファイル構成でインストールされます。
以上で、Swift Mailerのインストールは完了しました。
簡単なメールを送信してみる
インストールができたところで、早速試しに簡単なメールを送信してみましょう。
ここではComposerでインストールしたことを前提に、「Hello」というメールを送信します。
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('Subject');
$message->setFrom(['noreply@gray-code.com' => 'GRAYCODE']);
$message->setTo(['test@gray-code.com']);
$message->setBody(
'Hello,'
);
// メール送信
$result = $mailer->send($message);
var_dump($result);
上記のメールが正常に送信されると、しっかりメールが届きます。
届いたメールを確認すると、上記コードの「// メール作成」で設定した内容がちゃんと反映されていることが分かります。
解説
上から順にコードの動きを解説します。
SMTPサーバー情報の設定
最初の「require_once ‘vendor/autoload.php’;」では、SwiftMailerライブラリの読み込みを行います。
続く「// 送信設定」の下3行では、使用しているSMTPサーバーの設定です。
ここはご利用のサーバーに応じて内容を書き換えてください。
SMTPサーバーの設定
// 送信設定
$transport = new Swift_SmtpTransport('ホスト名', ポート番号);
$transport->setUsername('ユーザー名');
$transport->setPassword('パスワード');
「ホスト名」「ポート番号」をもとに、Swift_Mailerクラスのインスタンスを生成し、その後「ユーザー名」「パスワード」を設定します。
このインスタンスがメール送信の際に必要です。
メッセージ作成
続いて、「// メール作成」では、いよいよメールのメッセージ作成です。
まずはSwift_Messageクラスを作成します。
ここで、表題(件名)も設定を行います。
その後は、送信元の設定、宛先の設定、本文の順に宣言していきます。
※表題以外の宣言の順番は特に制約はありません。
例えば、送信元の「noreply@gray-code.com」と「GRAYCODE」をご利用のアドレス、氏名(または社名、担当部署など)にすると、「そこからメールが送信された」という設定になります。
宛先もメール受信可能な任意のメールアドレスを設定すれば、そこへ届きます。
Gメールや携帯キャリア、フリーメールアドレスなどなんでも可能です。
Note
実際にメールを送信するにはネットワークに繋がったSMTPサーバーが必要です。
もし適切なSMTPサーバーを設定しているにも関わらずメールが送れていない場合は、以下の点を確認してみてください。
- SMTPサーバーが動いているか
- サーバー上のユーザー名とパスワードの組み合わせは正しいか
- PHPエラーが出ていないか(PHPのバージョンやSwift Mailerのインストールが正常かどうか)
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。