PHPMailerでメール送信

メール送信ライブラリ PHPMailer

PHPのメール送信ライブラリ、PHPMailerの基本的な使用方法をメモします。

環境: phpmailer 6.2.0, Composer 1.9.1, PHP 7.4.10

PHPには標準でmail関数やmb_send_mail関数といったメール送信機能がありますが、
PHPMailerを利用することでSMTPサーバを利用した送信やメールへ添付ファイルの追加などを行う事が出来ます。

SMTPサーバとは

メールを送信する役割をもつサーバのことで、
SMTP(Simple Mail Transfer Protocol)とはメール送信する際に用いられるプロトコル(通信規格)を表している。
送信サーバのSMTPサーバからメール受信サーバ(POP/IMAP)へメールを届けます。

SMTPサーバ経由のメリット

外部のSMTPサーバを経由する事で、送信したメールが迷惑メールやスパムとして扱われたりされることを回避できる。

PHPMailerのセットアップ

プロジェクトへPHPMailerライブラリをインストールします。

githubにあるPHPMailerの公式リポジトリから直接ソースをダウンロードすることも出来ますが、
今回はComposerを使用したセットアップ方法を紹介します。

Composerの詳細については下記記事などを参考にしてください。

(Mac)Composerを使用したLaravelのインストールとプロジェクト作成

composer.jsonのあるプロジェクトのパスで下記インストールコマンドを実行

composer require phpmailer/phpmailer

インストールが完了するとプロジェクト内にvendor/phpmailerが作成されます。

composer.json

(SAMPLE)自動返信メール付きお問い合わせフォーム

PHPMailerを利用してお問い合わせフォーム投稿後の自動返信メール機能を作成します。

入力フォーム

送信先 done.php

※PHPMailerクラスをnewし、メール送信に必要な宛先、本文内容などの各情報をプロパティとして設定しています。

ccなど設定不要な場合は記述しなければOKです。

最終的にsend関数を呼び出すことでメール送信が実行されます。
今回の例ではフォームから入力した内容が自動返信メールの本文内に入ります。

※クラスのオートロードを利用してvendor/phpmailer/phpmailer/src/PHPMailer.phpを読み込んでいる

GmailのSMTPサーバを経由する

今回の例では送信の際に経由するSMTPサーバとしてgmailのサービス(smtp.gmail.com)を利用しています。

GmailのSMTPサーバー(smtp.gmail.com)を経由して送信したい場合、
利用しているGoogleアカウントにログインし下記の設定を行っておく必要があります。

Gmailアカウントの設定
  • 2段階認証の設定を行う
  • アプリパスワードを生成する

(done.php 19、20行目)
$phpmailer->Username
$phpmailer->Password

Usernameはアカウントのgmailアドレス、Passwordには「生成されたアプリ パスワード」を設定します。

(!)SMTP経由でなくてもメール送信できる

PHPMailerはSMTP認証を行わないメール送信も、もちろん可能です。

(12行目)
$gmail_smtp = false; //SMTPのための設定をしなければOK.

※SMTPを使用しない場合、ローカル開発環境ではメール送信が行えませんのでレンタルサーバなどネットワークにつながった環境で確認します。


(参考)
https://packagist.org/packages/phpmailer/phpmailer
smtp.gmail.comを使ってメール送信するための設定方法
「SMTP」って何?メールソフトを設定してGmailをもっと便利に使う方法

Follow me!