【PHPMailer】SMTP認証付きで安全にメールを送信する方法|セキュリティ重視の設定例


PHPMailerで安全にメールを送信したい方へ

PHPMailerは、PHPでメール送信を行う際に非常に強力なライブラリですが、「ただ送信できればいい」では不十分です。
セキュリティや信頼性を高めるには、SMTP認証を使った適切な設定が重要になります。

この記事では、以下のような目的の方に向けて、PHPMailerで安全にメールを送信する方法を解説します。

GmailやConoHaなどのSMTPを使いたい

お問い合わせフォームの送信内容を安全に処理したい

SMTP経由で確実にメールを届けたい

PHPのmail()関数では不安がある


セキュリティを高めるための基本方針

以下の3点を守ることで、悪意ある攻撃や不具合からWebサイトを守ることができます。

PHPMailerの適切なエラーハンドリング

SMTP認証を使う

入力値のバリデーションとサニタイズ


SMTP認証付きPHPMailerのコード例

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

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
     // Gmail用
   $mail->Host = 'smtp.gmail.com';
   $mail->Username = 'your@gmail.com';
   $mail->Password = 'アプリパスワード';
   $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
   $mail->Port = 587;

   // 国内サーバー用(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;

    // メール内容
    $mail->setFrom('your@gmail.com', '送信者名');
    $mail->addAddress('to@example.com', '受信者名');
    $mail->Subject = '安全なメール送信テスト';
    $mail->Body    = 'このメールはPHPMailerを使ってSMTP認証で送信されました。';

    $mail->send();
    echo 'メールが正常に送信されました。';
} catch (Exception $e) {
    echo "送信エラー: {$mail->ErrorInfo}";
}

エラーが出る場合のチェックポイント

現象原因と対策
SMTP connect() failedホスト名・ポート・認証情報が正しいか再確認
Could not authenticateGmailのアプリパスワードが必要。2段階認証を確認
文字化けする$mail->CharSet = 'UTF-8'; を設定する

セキュリティ対策の具体例(フォーム連携)

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

htmlspecialchars():XSS対策

filter_var():メールアドレスの形式確認

strip_tags():不要なHTMLを除去

🔐 入力値の検証は必須です。正しく処理しないと、スパムメールの踏み台にされる恐れもあります。


応用:お問い合わせフォームと組み合わせたい方へ

このコードを元にした「セキュアなお問い合わせフォーム」の作成手順は、以下の記事で詳しく解説しています。

👉 PHPで安全なお問い合わせフォームを作る方法はこちら

また、PHPMailerの基本的な使い方は以下の記事をご覧ください。

👉 PHPMailerの使い方(インストール〜基本送信)


まとめ

PHPMailerを使ったメール送信は、単純な機能だけでなく「どう安全に送るか」が重要です。
本記事では、SMTP認証付きのメール送信方法と、最低限必要なセキュリティ対策を紹介しました。

実運用するサイトでは、必ずSMTPとセキュリティ対策を取り入れるようにしましょう。


関連記事:実装例

PHPMailer対応:PHPで作るお問い合わせフォーム|確認画面&メール送信付きサンプルあり

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

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

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

模写の手順

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