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で安全なコンタクトフォームを作成も!