PHPMailer完全ガイド|Gmail・ConoHa・Xserver対応のSMTPメール送信


PHPMailerとは?mail()関数との違い

PHPMailer(ピーエイチピーメーラー)は、PHPでメールを送信するためのオープンソースライブラリです。WordPress・Drupal・Joomla!など、世界中の主要CMSにも採用されています。

PHP標準のmail()関数でもメール送信は可能ですが、実務ではほぼ使われません。その理由を比較表で確認してみましょう。

比較項目mail()関数PHPMailer
SMTP認証✕ 非対応◎ 対応
HTMLメール△ 手動でヘッダー設定が必要◎ isHTML(true)だけ
添付ファイル△ 複雑なMIME処理が必要◎ addAttachment()だけ
日本語対応△ 文字化けしやすい◎ UTF-8/base64で安定
SSL/TLS暗号化✕ 非対応◎ 対応
エラーハンドリング✕ true/falseのみ◎ 詳細なエラーメッセージ
Gmail送信✕ 不可◎ アプリパスワードで対応
迷惑メール対策△ スパム判定されやすい◎ SMTP認証で信頼性向上

特に重要なのがSMTP認証への対応です。SMTP認証とは、メール送信時にサーバーに「自分は正規のユーザーですよ」と証明する仕組みのことです。mail()関数ではこの認証ができないため、送信したメールが迷惑メールフォルダに振り分けられるリスクが高くなります。


PHPMailerの導入方法

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

Composerは、PHPのライブラリ管理ツールです。npmやpipのPHP版と考えるとわかりやすいでしょう。

ターミナルでプロジェクトのディレクトリに移動し、以下を実行します。

composer require phpmailer/phpmailer

インストール後、以下の1行でPHPMailerを使えるようになります。

require 'vendor/autoload.php';

ディレクトリ構成例:

project/
├── vendor/
├── send.php
└── .env(任意でSMTP情報を環境変数化)

方法2:手動で設置する(Composerが使えない場合)

レンタルサーバーなどComposerが使えない環境では、手動インストールも可能です。

手順:

  1. GitHubからダウンロード → PHPMailer公式リポジトリ
  2. src/フォルダから必要なファイルをプロジェクトに配置
  3. 以下の3行で読み込む
require_once 'path/to/PHPMailer/src/Exception.php';
require_once 'path/to/PHPMailer/src/PHPMailer.php';
require_once 'path/to/PHPMailer/src/SMTP.php';

注意:手動インストールの場合、セキュリティアップデートは自分で管理する必要があります。可能な限りComposerを使いましょう。


基本のメール送信コード(コピペで使える)

以下は、PHPMailerでSMTPメール送信する最小構成のコードです。// ← 変更の部分を自分の環境に書き換えるだけで動きます。

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // ===== SMTP設定 =====
    $mail->isSMTP();
    $mail->Host       = 'smtp.gmail.com';          // ← 変更:SMTPサーバー
    $mail->SMTPAuth   = true;
    $mail->Username   = 'your@gmail.com';           // ← 変更:メールアドレス
    $mail->Password   = 'xxxx xxxx xxxx xxxx';      // ← 変更:アプリパスワード
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    // ===== 日本語対応 =====
    $mail->CharSet  = 'UTF-8';
    $mail->Encoding = 'base64';

    // ===== 送信元・送信先 =====
    $mail->setFrom('your@gmail.com', '送信者名');    // ← 変更
    $mail->addAddress('to@example.com', '受信者名'); // ← 変更

    // ===== メール内容 =====
    $mail->isHTML(false);                            // テキストメールの場合
    $mail->Subject = 'テストメール';
    $mail->Body    = 'PHPMailerからのテスト送信です。';

    $mail->send();
    echo 'メールが送信されました';

} catch (Exception $e) {
    echo "送信に失敗しました: {$mail->ErrorInfo}";
}

コードのポイント

new PHPMailer(true)trueとは?

例外処理(Exception)を有効にする設定です。trueにしておくと、送信に失敗したときcatchブロックで詳細なエラーメッセージを取得できます。デバッグ時に非常に便利なので、常にtrueにしておきましょう。

日本語の文字化け対策

以下の2行は日本語メールを送る場合に必須です。

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

CharSetで文字コードを、Encodingでエンコーディング方式を指定します。この2行がないと、件名や本文の日本語が文字化けします。


サーバー別SMTP設定一覧

環境に合わせてHostPortSMTPSecure・認証情報を変更してください。

Gmail

$mail->Host       = 'smtp.gmail.com';
$mail->Username   = 'your@gmail.com';
$mail->Password   = 'アプリパスワード(16桁)';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

Gmailで送信するための事前準備:

  1. Googleアカウントで2段階認証を有効化する
  2. Googleアカウント設定 → セキュリティ → 「アプリパスワード」を発行
  3. 発行された16桁のパスワードを$mail->Passwordに設定

重要:Googleアカウントの通常パスワードは使えません。必ず「アプリパスワード」を使ってください。

ConoHa WING

$mail->Host       = 'mail.yourdomain.com';  // 例:mail.codequest.work
$mail->Username   = 'info@yourdomain.com';
$mail->Password   = 'メールアカウントのパスワード';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port       = 465;

ConoHa WINGのコントロールパネル → メール管理 → メール設定 でSMTP情報を確認できます。

Xserver

$mail->Host       = 'sv●●●●.xserver.jp';   // サーバーパネルで確認
$mail->Username   = 'info@yourdomain.com';
$mail->Password   = 'メールアカウントのパスワード';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port       = 465;

Xserverのサーバーパネル → メールアカウント設定 でSMTP情報を確認できます。

さくらのレンタルサーバ

$mail->Host       = '初期ドメイン.sakura.ne.jp';
$mail->Username   = 'メールアドレス@初期ドメイン';
$mail->Password   = 'メールパスワード';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

SSL/TLSの選び方

SMTPSecureに適切な方式を設定することで、メール送信時の盗聴リスクを減らせます。ポートと暗号化方式の正しい組み合わせは以下の通りです。

ポート暗号化方式PHPMailerの設定値
587STARTTLSPHPMailer::ENCRYPTION_STARTTLS
465SSL/TLSPHPMailer::ENCRYPTION_SMTPS

HTMLメール・添付ファイルの送信方法

HTMLメールを送る

$mail->isHTML(true);
$mail->Subject = 'HTMLメールのテスト';
$mail->Body    = '<h1>こんにちは</h1><p>HTMLメールのテスト送信です。</p>';
$mail->AltBody = 'こんにちは。HTMLメールのテスト送信です。';

AltBodyは、HTMLメールに対応していないメールクライアント向けのプレーンテキスト版です。設定しなくても動きますが、設定しておくとメールの到達率が上がります。

添付ファイルを送る

// ファイルパスで添付
$mail->addAttachment('/path/to/file.pdf', '請求書.pdf');

// 複数ファイルも可能
$mail->addAttachment('/path/to/image.jpg', '写真.jpg');

CC・BCC・Reply-Toの設定

$mail->addCC('cc@example.com', 'CCの宛名');
$mail->addBCC('bcc@example.com');
$mail->addReplyTo('reply@example.com', '返信先の名前');

お問い合わせフォームの実装(入力→確認→送信)

PHPMailerを使って、確認画面付きのお問い合わせフォームを実装する方法を解説します。入力→確認→送信完了の3ステップ構成です。

  1. index.php → ユーザーが入力するフォーム画面
  2. confirm.php → 入力内容を確認する画面
  3. thanks.php → メール送信後の完了画面

各ページ間ではsessionを使ってデータを保持し、入力内容をconfirm.phpで確認後にthanks.phpで送信します。

1. フォーム入力画面(index.php)

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    // thanks.php 経由で戻ってきたときにセッションを初期化
    $_SESSION['form_data'] = [];
}

$form_data = isset($_SESSION['form_data']) ? $_SESSION['form_data'] : [];
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>お問い合わせフォーム</title>
</head>
<body>
    <h1>お問い合わせ</h1>
    <form action="confirm.php" method="POST">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" required
            value="<?php echo htmlspecialchars($form_data['name'] ?? ''); ?>">

        <label for="email">メールアドレス:</label>
        <input type="email" id="email" name="email" required
            value="<?php echo htmlspecialchars($form_data['email'] ?? ''); ?>">

        <label for="message">メッセージ:</label>
        <textarea id="message" name="message"
            rows="4"><?php echo htmlspecialchars($form_data['message'] ?? ''); ?></textarea>

        <button type="submit">確認</button>
    </form>
</body>
</html>

ポイント:

  • session_start()でセッションを開始し、入力データを保持
  • method="POST"でデータをconfirm.phpに送信
  • htmlspecialchars()でXSS攻撃を防止

2. 確認画面(confirm.php)

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $_SESSION['form_data'] = $_POST;
}

$form_data = $_SESSION['form_data'] ?? [];
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>確認画面</title>
</head>
<body>
    <h1>確認画面</h1>
    <p><strong>名前:</strong> <?= htmlspecialchars($form_data['name'] ?? '未入力') ?></p>
    <p><strong>メールアドレス:</strong> <?= htmlspecialchars($form_data['email'] ?? '未入力') ?></p>
    <p><strong>メッセージ:</strong><br>
        <?= nl2br(htmlspecialchars($form_data['message'] ?? '未入力')) ?>
    </p>

    <form action="thanks.php" method="POST">
        <?php foreach ($form_data as $key => $value): ?>
        <input type="hidden" name="<?= htmlspecialchars($key) ?>"
            value="<?= htmlspecialchars($value) ?>">
        <?php endforeach; ?>
        <button type="submit">送信</button>
    </form>

    <form action="index.php" method="GET">
        <button type="submit">戻る</button>
    </form>
</body>
</html>

ポイント:

  • $_SESSION['form_data'] = $_POST;でフォームデータをセッションに保存
  • 入力データをhtmlspecialchars()でサニタイズ
  • thanks.phpへの送信ボタンと、index.phpに戻るボタンを設置

3. メール送信・完了画面(thanks.php)

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$form_data = $_POST;

// メール本文の作成
$message = <<<EOT
名前: {$form_data['name']}
メールアドレス: {$form_data['email']}
メッセージ:
{$form_data['message']}
EOT;

$mail_success = false;
$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host       = 'smtp.gmail.com';       // ← 変更
    $mail->SMTPAuth   = true;
    $mail->Username   = 'your@gmail.com';        // ← 変更
    $mail->Password   = 'アプリパスワード';       // ← 変更
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    $mail->CharSet  = 'UTF-8';
    $mail->Encoding = 'base64';
    $mail->setFrom('your@gmail.com', 'お問い合わせフォーム');
    $mail->addAddress('admin@example.com', '管理者');

    $mail->Subject = 'お問い合わせフォームからのメッセージ';
    $mail->Body    = $message;

    // 添付ファイル(あれば)
    if (!empty($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) {
        $mail->addAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']);
    }

    $mail->send();
    $mail_success = true;
} catch (Exception $e) {
    error_log('メール送信失敗: ' . $mail->ErrorInfo);
}

// セッションをクリア
session_start();
session_unset();
session_destroy();
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8" />
    <title>送信完了</title>
</head>
<body>
    <h1>送信完了</h1>
    <?php if ($mail_success): ?>
    <p>お問い合わせいただきありがとうございます。</p>
    <?php else: ?>
    <p>申し訳ありませんが、メールの送信に失敗しました。</p>
    <?php endif; ?>
    <a href="index.php">トップページへ戻る</a>
</body>
</html>

ポイント:

  • PHPMailerでSMTP経由のメール送信を実行
  • 送信後はsession_unset()session_destroy()でセッションをクリアし、再送信を防止
  • 添付ファイルにも対応

完全なサンプルコードはGitHubで公開しています → GitHubサンプルコード


セキュリティ対策

PHPMailerをお問い合わせフォームなどで使う場合、入力値のセキュリティ対策は必須です。PHPMailer自体が安全でも、フォームから受け取った値をそのまま使うと攻撃の対象になります。

XSS(クロスサイトスクリプティング)対策

フォームから受け取った値は、必ずhtmlspecialchars()でエスケープ処理します。

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

XSSとは、悪意のあるスクリプト(JavaScriptなど)をフォーム経由で埋め込む攻撃です。エスケープしないと、入力された<script>タグがそのまま実行される危険があります。

メールヘッダーインジェクション対策

メールの宛先や件名に改行文字が含まれていると、意図しない宛先にメールが送信される可能性があります。

$email = str_replace(["\r", "\n"], '', $_POST['email']);
$email = filter_var($email, FILTER_VALIDATE_EMAIL);

バリデーション(入力チェック)

// 空チェック
if (empty($_POST['name']) || empty($_POST['email'])) {
    die('名前とメールアドレスは必須です');
}

// メールアドレスの形式チェック
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
if (!$email) {
    die('有効なメールアドレスを入力してください');
}

SMTP認証情報の管理

パスワードをコード内に直書きするのは避け、環境変数や設定ファイルで管理しましょう。

// .envファイルや設定ファイルから読み込む例
$mail->Username = getenv('SMTP_USER');
$mail->Password = getenv('SMTP_PASS');

.envファイルを使う場合は、Webからアクセスできない場所に配置するか、.htaccessでアクセスを禁止してください。

スパム対策

reCAPTCHAやCSRFトークンを導入すると、不正送信を大幅に減らせます。送信回数制限を設けるのも効果的です。


エラー対処法(トラブルシューティング)

SMTP connect() failed

原因:SMTPサーバーへの接続に失敗しています。

確認ポイント:

  • Hostのサーバー名が正しいか
  • Port番号が正しいか(587 or 465)
  • SMTPSecureの暗号化方式がポートと一致しているか
  • サーバー側でSMTP接続がブロックされていないか
  • ローカル環境では外部SMTP接続がブロックされている場合があります

Could not authenticate

原因:認証情報(ユーザー名・パスワード)が間違っています。

確認ポイント:

  • Usernameがメールアドレス全体(@以降も含む)になっているか
  • Passwordが正しいか
  • Gmailの場合:通常のGoogleパスワードではなく「アプリパスワード」を使っているか
  • Gmailの場合:2段階認証が有効になっているか

Could not connect to SMTP host

原因:SMTPホストに到達できないときに発生します。

確認ポイント:

  • SSL/TLS設定が正しいかを確認
  • ネットワークやサーバー側で25番ポートがブロックされていないかも要確認

日本語が文字化けする

原因:文字コードの設定が不足しています。

対処:以下の2行が設定されているか確認してください。

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

PHPファイル自体の文字コードもUTF-8で保存されているか確認しましょう。

メールが迷惑メールフォルダに入る

原因:送信元ドメインの信頼性が低い可能性があります。

対処:

  • SPFレコードを設定する(DNSに送信元サーバーのIPを登録)
  • DKIM署名を設定する(メールに電子署名を付与)
  • setFrom()に設定するメールアドレスのドメインと、実際のSMTPサーバーのドメインを一致させる

SPFレコードとは、「このドメインからのメール送信を許可するサーバーはこれです」とDNSに宣言する仕組みです。DKIM署名とは、メールが送信途中で改ざんされていないことを証明する電子署名です。どちらもレンタルサーバーのコントロールパネルから設定できることが多いので、確認してみてください。

デバッグモードを使う

エラーの原因が特定できない場合は、デバッグモードを有効にすると詳細なログが表示されます。

$mail->SMTPDebug = 2; // 0:無効 1:クライアント 2:クライアント+サーバー

本番環境では必ず0に戻してください。デバッグ情報にSMTP認証の詳細が含まれるため、そのまま公開するとセキュリティリスクになります。


PHPメール送信ライブラリの比較|mail関数 vs PHPMailer vs 他の選択肢

PHPでメールを送信する方法は、標準のmail()関数以外にもいくつかのライブラリが存在します。PHPメール送信ライブラリとして代表的な3つを比較し、それぞれの特徴を整理します。

比較項目mail()関数PHPMailerSymfony MailerSwiftMailer
SMTP認証非対応対応対応対応(開発終了)
導入の手軽さPHP標準で不要Composerで1行Composerで1行非推奨
日本語対応文字化けしやすいUTF-8/base64で安定UTF-8で安定UTF-8で安定
SPF/DKIM対応サーバー依存SMTP認証で対応SMTP認証で対応SMTP認証で対応
WordPress採用非採用標準採用非採用非採用
学習コスト低い低いやや高い中程度
メンテナンス状況PHP本体に依存活発に更新中活発に更新中開発終了(非推奨)
推奨用途使用非推奨個人〜中規模サイトSymfony/Laravelプロジェクト新規採用は非推奨

PHPメーラーとして最も広く使われているのはPHPMailerです。SwiftMailerは2021年に開発が終了し、後継のSymfony Mailerへの移行が推奨されています。新規プロジェクトではPHPMailer(一般的なPHPプロジェクト)かSymfony Mailer(Symfony/Laravelプロジェクト)のどちらかを選ぶのが適切です。


SPF・DKIM・DMARC|メール認証の仕組みと設定方法

PHPのmail()関数でメール送信するとSPFレコードの検証に失敗しやすく、迷惑メールに振り分けられる原因になります。PHPMailerでSMTP認証を使えばこの問題は大幅に改善されますが、さらにメールの到達率を高めるにはDNS側でSPF・DKIM・DMARCの設定が必要です。

SPFレコード|送信元サーバーの正当性を証明

SPF(Sender Policy Framework)は、「このドメインからメールを送信して良いサーバーはどれか」をDNSに宣言する仕組みです。受信側のメールサーバーがSPFレコードを確認し、登録されていないサーバーからの送信を拒否・スパム判定します。

主要レンタルサーバーでの設定状況は以下の通りです。

サーバーSPFDKIM設定場所
ConoHa WING自動設定済みコントロールパネルから有効化メール管理 → メール設定
Xserver自動設定済みサーバーパネルから有効化メールアカウント設定 → DKIM設定
さくらのレンタルサーバ手動設定が必要対応プランのみドメイン → DNS設定
Gmail(Google Workspace)自動設定済み管理コンソールから有効化Google管理コンソール → Gmail設定

DKIM署名|メールの改ざん防止

DKIM(DomainKeys Identified Mail)は、送信メールに電子署名を付与し、途中で内容が改ざんされていないことを証明する仕組みです。SPFと組み合わせて設定することで、メールの信頼性が大幅に向上します。

DMARC|SPFとDKIMを統合する認証ポリシー

DMARC(Domain-based Message Authentication, Reporting and Conformance)は、SPFとDKIMの認証結果に基づいて「認証に失敗したメールをどう扱うか」を指定するポリシーです。Googleは2024年2月以降、1日5,000通以上送信するドメインにDMARC設定を義務化しています。PHPMailerでSMTP送信する場合も、送信元ドメインにDMARCレコードを設定しておくことを推奨します。


よくある質問(FAQ)

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

はい、MITライセンスで完全無料です。個人サイトでも商用サイトでも、制限なく使用できます。

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

PHPMailer 6.x はPHP 5.5以上が必要です。セキュリティの観点から、PHP 8.0以上の使用を推奨します。

Q. mail()関数とPHPMailerのどちらを使うべきですか?

実務ではPHPMailer一択です。mail()関数はSMTP認証に対応しておらず、送信したメールが迷惑メールに振り分けられるリスクが高いためです。

Q. GmailのSMTPを使う場合の注意点は?

2段階認証を有効にして「アプリパスワード」を利用するのがおすすめです。通常のGoogleアカウントパスワードを直書きするのは避けましょう。

Q. メールが迷惑メールに入らないようにするには?

SPFレコードやDKIM署名を設定することで、送信元ドメインの信頼性を高められます。また、件名や本文にスパム判定されやすい単語を避けることも有効です。

Q. SMTP認証エラーが出たときの確認ポイントは?

メールサーバーのホスト名・ポート番号・暗号化方式(TLS/SSL)が正しいか確認してください。また、ユーザー名やパスワードが正しいかも見直しましょう。

Q. WordPressでもPHPMailerは使えますか?

WordPressには標準でPHPMailerが組み込まれています。ただし、テーマやプラグインのカスタマイズで直接使う場合は、WordPress標準のwp_mail()関数経由で使うのが推奨されます。詳しくはWordPress関数一覧をご覧ください。

Q. 送信数に制限はありますか?

PHPMailer自体に制限はありませんが、SMTPサーバー側に送信数の制限があります。Gmailの場合、1日あたり500通が上限です(Google Workspaceは2,000通)。大量送信が必要な場合は、SendGridやAmazon SESなどの専用サービスを検討してください。

Q. ローカル環境でテスト送信したい場合は?

Mailtrapなどのメール送信テストサービスを使うのがおすすめです。実際のメールアドレスに送信せずに、メールの内容や表示を確認できます。

Q. 本番環境で導入する際に気をつけることは?

認証情報をコードに直書きせず、環境変数や設定ファイルで管理してください。さらにTLSを必ず有効にし、ログを残しておくと運用トラブルを防げます。


PHPMailerのダウンロードとインストール方法

PHPMailerのインストール方法は、Composer経由とZIPダウンロードの2パターンがあります。 環境に合わせて選んでください。

Composerでインストールする手順

Composerとは、PHPのパッケージ管理ツールです。 Node.jsのnpm、Pythonのpipに相当するもので、ライブラリの依存関係を自動で解決してくれます。

  1. Composerが未インストールの場合は、Composer公式サイトからインストールする
  2. ターミナルでプロジェクトディレクトリに移動する
  3. 以下のコマンドを実行する
composer require phpmailer/phpmailer

実行すると、プロジェクト直下にvendor/ディレクトリが作成され、PHPMailerの全ファイルが自動でダウンロードされます。 PHPコード内では、以下の1行を追加するだけでPHPMailerが使えるようになります。

require 'vendor/autoload.php';

Composerを使うメリットは、composer updateコマンドだけでセキュリティアップデートを適用できる点です。 本番環境でも安全に運用するなら、Composerによるインストールを推奨します。

GitHubからZIPダウンロードする手順

レンタルサーバーなどComposerが使えない環境では、GitHubから直接ダウンロードして設置できます。

  1. PHPMailer GitHubリリースページにアクセスする
  2. 最新バージョンの「Source code (zip)」をクリックしてダウンロードする
  3. ZIPを解凍し、src/フォルダをプロジェクト内に配置する
  4. PHPコード内で以下の3ファイルをrequireする
require_once 'path/to/PHPMailer/src/Exception.php';
require_once 'path/to/PHPMailer/src/PHPMailer.php';
require_once 'path/to/PHPMailer/src/SMTP.php';

注意: 手動ダウンロードの場合、セキュリティパッチの適用も手動で行う必要があります。 定期的にGitHubリリースページを確認し、新しいバージョンが公開されたらファイルを差し替えてください。

Composer経由とZIPダウンロードの比較

比較項目Composer経由ZIPダウンロード
導入の手軽さコマンド1行で完了ダウンロード+ファイル配置が必要
アップデートcomposer updateで自動手動でファイル差し替え
依存関係の管理自動で解決手動で管理
サーバー要件SSH接続またはComposerが必要FTPのみでもOK
推奨度◎ 強く推奨○ Composerが使えない場合の代替

PHPMailerのバージョン確認と互換性

PHPMailerのバージョンとは、ライブラリのリリース番号のことで、使用しているPHPのバージョンとの互換性に直接関わる重要な情報です。 バージョンの不一致はエラーの原因になるため、必ず確認しておきましょう。

現在のPHPMailerバージョンを確認する方法

Composerでインストールした場合は、以下のコマンドでバージョンを確認できます。

composer show phpmailer/phpmailer

PHPコード内からバージョンを取得する場合は、VERSION定数を使います。

use PHPMailer\PHPMailer\PHPMailer;

require 'vendor/autoload.php';

$mail = new PHPMailer();
echo PHPMailer::VERSION;  // 例:6.9.3

手動インストールの場合は、src/PHPMailer.phpファイル内のVERSION定数で確認できます。

PHPMailerバージョンとPHPバージョンの互換性

PHPMailerはメジャーバージョンごとに対応するPHPバージョンが異なります。 PHPMailer公式リポジトリのREADMEに記載されている互換性情報をもとに、対応表を以下にまとめます。

PHPMailerバージョン対応PHPバージョンサポート状況
6.x(最新)PHP 5.5以上◎ 現在のメインバージョン
5.xPHP 5.0〜7.x✕ サポート終了(セキュリティ修正のみ)

推奨環境: PHPMailer 6.xをPHP 8.0以上で使用するのが最も安全です。 PHP 5.xや7.x系でも動作しますが、PHP本体のセキュリティサポートが終了しているバージョンでの運用は避けてください。

PHPMailerをアップデートする方法

Composerでインストールした場合は、以下のコマンドで最新版に更新できます。

composer update phpmailer/phpmailer

手動インストールの場合は、GitHubリリースページから最新版をダウンロードし、src/フォルダのファイルを差し替えてください。 アップデート後は、既存のメール送信コードが正常に動作するかテスト送信で確認することを推奨します。


まとめ

PHPMailerは、PHPでメール送信するなら最初に覚えるべきライブラリです。この記事では、導入からサーバー別SMTP設定、HTMLメール・添付ファイル送信、お問い合わせフォーム実装、セキュリティ対策、エラー対処法まで網羅的に解説しました。

この記事のポイント:

  • PHPMailerはmail()関数より安全で機能が豊富
  • Composerでインストールするのが最も簡単
  • 日本語メールにはCharSet = 'UTF-8'Encoding = 'base64'が必須
  • Gmail・ConoHa WING・Xserver・さくらなど主要サーバーに対応
  • お問い合わせフォームでは入力→確認→送信の3ステップ構成が安全
  • XSS・ヘッダーインジェクション対策を忘れずに
  • エラー時はデバッグモードで原因を特定

PHPMailer公式リポジトリ:https://github.com/PHPMailer/PHPMailer


【MEGADEAL 10%】【20,000円OFFクーポン】… 【MEGADEAL 10%】【20,000円OFFクーポン】… ¥124,801 【楽天1位】【新品】ノートパソコン パソ… 【楽天1位】【新品】ノートパソコン パソ… ¥34,800 【楽天1位常連・超700冠獲得】黒/白 モニ… 【楽天1位常連・超700冠獲得】黒/白 モニ… ¥13,999 【ふるさと納税】液晶モニター31.5型ワイ… 【ふるさと納税】液晶モニター31.5型ワイ… ¥135,000 【ふるさと納税】HHKB Professional HYBRI… 【ふるさと納税】HHKB Professional HYBRI… ¥130,000 ロジクール ワイヤレスキーボード K295GP … ロジクール ワイヤレスキーボード K295GP … ¥3,201
Rakuten Web Service Center