【初心者向け】PHPMailerの使い方まとめ|安全なメール送信を簡単に実装!


PHPMailerとは?

PHPMailer(ピーエイチピーメーラー)は、PHPでメールを送信するためのライブラリです。
通常、PHP標準のmail()関数でもメール送信は可能ですが、以下のような制限があります。

  • 日本語が文字化けしやすい
  • メールの形式(HTML, 添付ファイルなど)に制限がある
  • GmailなどのSMTP送信に対応していない
  • セキュリティ対策がしづらい

PHPMailerを使えば、SMTP経由のメール送信や、HTMLメール・添付ファイルの送信エラー制御などが簡単に行えます。
そのため、企業のWebサイトやお問い合わせフォームなどで広く使われています。


PHPMailerのインストール方法

方法①:Composerを使う(推奨)

composer require phpmailer/phpmailer

vendor/autoload.phpを読み込むことで、簡単にPHPMailerを使用できます。

require 'vendor/autoload.php';

方法②:手動で設置する

  • 以下のGitHubリポジトリから最新版をダウンロード:
    https://github.com/PHPMailer/PHPMailer
  • src/PHPMailer.phpなど必要なファイルをプロジェクトに追加
  • require_onceで読み込む
require_once 'PHPMailer.php';
require_once 'SMTP.php';
require_once 'Exception.php';

最小構成のメール送信コード

以下は、もっともシンプルなPHPMailerの使い方です。SMTPなしでローカル環境や簡易テストに使えます。

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->setFrom('your@example.com', '送信者名');
    $mail->addAddress('to@example.com', '受信者名');
    $mail->Subject = 'テストメール';
    $mail->Body    = 'これはPHPMailerを使ったテストメールです。';
    
    $mail->send();
    echo 'メールが送信されました';
} catch (Exception $e) {
    echo "送信に失敗しました: {$mail->ErrorInfo}";
}

日本語対応のポイント

  • $mail->CharSet = 'UTF-8';
  • $mail->Encoding = 'base64';

SMTPを使ったメール送信(Gmail/ConoHa等)

SMTP(Simple Mail Transfer Protocol)を使えば、信頼性の高いメール送信が可能になります。
以下はGmailを使ったSMTP送信の例です。

$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'あなたのGmailアドレス';
$mail->Password = 'アプリパスワード';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

💡 Gmailでは「2段階認証」+「アプリパスワード」の発行が必須です。

ConoHa WINGなどの場合は、契約中のSMTP情報を確認し、Host, Port, Username, Passwordを設定してください。


よくあるエラーと対処法

エラー内容原因と対策
SMTP connect() failedホスト名やポート番号、認証情報の間違い。SSL/TLSの設定も確認。
Could not authenticateユーザー名やパスワードが間違っている可能性。Gmailの場合は「アプリパスワード」が必要。
日本語が文字化けする$mail->CharSet = 'UTF-8'; を必ず指定。本文の文字コードも一致させる。

セキュリティを考慮した使い方

メールフォーム経由のスパム・攻撃を防ぐために、以下のようなセキュリティ対策が必須です。

  • XSS対策htmlspecialchars() で入力をエスケープ
  • ヘッダーインジェクション対策\nなどの改行文字を除去
  • バリデーション:空チェック、形式チェック(filter_var()

例:安全な入力データの処理

$name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

🔐 より詳しい実装例はこちら → セキュアな送信方法の記事へ


よくある質問(FAQ)

Q. PHPMailerは無料で使えますか?

はい、MITライセンスで無料です。商用サイトでも問題なく使用できます。

Q. PHPのバージョン制限はありますか?

PHP 5.5以降が推奨です。最新バージョンに近いほど動作は安定します。

Q. mail()関数と何が違うの?

PHPMailerは、SMTP送信対応・HTMLメール対応・エラー処理の強化など多くの機能を提供しています。


お問い合わせフォームへの応用例

PHPMailerを使えば、ユーザー入力→バリデーション→メール送信までを安全に構築できます。

// フォームの内容をPHPMailerで送信

まとめ

PHPMailerは、PHPで安全かつ確実なメール送信を行うために最適なライブラリです。
初心者でも簡単に扱える反面、適切な設定やセキュリティ対策をしなければ問題が発生することもあります。

まずは今回紹介した最小構成から始めて、SMTP対応やフォーム応用など段階的にステップアップしてみましょう。

✅ 今後のステップとして、PHPMailerでセキュリティ対策されたメール送信や、実践的なお問い合わせフォームもぜひ参考にしてください。基本のPHPで安全なコンタクトフォームを作成も!

✪ 画像素材がないものはランダムで表示されるようになっています。フリー素材などでご用意ください。

おすすめChromeプラグイン一覧

プラグイン名特徴
GoFullPageウェブページ全体のスクリーンショットを簡単に取得できるブラウザ拡張機能です。
ColorZilla色を抽出するための拡張機能です。
WhatFontウェブページ上のフォントの情報を簡単に確認できるブラウザ拡張機能です。
PerfectPixelデザイナーが作成したデザインと実際にコーディングされたウェブページがどの程度一致しているかを確認・調整するためのブラウザ拡張機能です。

模写の手順

ステップ内容
ステップ 1構図を手書きか全画面スクショ(Go full page等)した後、ペイントツールで四角で囲い、大まかなclass,命名規則をあらかじめ決める。
ステップ 2HTMLの基本構造を作成する
ステップ 3CSSでレイアウトを模写する
ステップ 4 中級〜JavaScriptを追加して動きを再現する
ステップ 5最終調整を行い、検証ツールやPerfectPixel(chromeプラグイン)などで完成を確認する。