2026年5月20日
2026年5月20日
WordPressのSMTPメール設定でメールが届かない問題を解決する方法
はじめに
WordPressのデフォルトメール送信(wp_mail())は、サーバーのPHP mail() 関数を使用します。多くのホスティング環境でこの関数が無効または制限されており、パスワードリセットメールや通知メールが届かない原因になります。SMTPを設定することで確実にメールを送信できます。
症状・原因
- パスワードリセットメールが届かない
- ユーザー登録の確認メールが届かない
- お問い合わせフォームの通知が届かない
- メールが迷惑メールフォルダに入る
原因はほとんどの場合、WordPressがサーバーのPHP mail() 関数を使っているためです。
解決手順
ステップ1:WP Mail SMTPプラグインをインストール
wp plugin install wp-mail-smtp --activate
または管理画面 → プラグイン → 新規追加 で「WP Mail SMTP」を検索してインストール。
ステップ2:SMTP設定を行う
管理画面 → WP Mail SMTP → 設定 → メーラー で「その他のSMTP」を選択:
| 設定項目 | 値の例 |
|---------|--------|
| SMTPホスト | smtp.example.com |
| 暗号化 | TLS |
| SMTPポート | 587 |
| 認証 | ON |
| SMTPユーザー名 | user@example.com |
| SMTPパスワード | your_password |
ステップ3:コードで直接SMTP設定(プラグイン不使用)
// functions.php — phpmailer_init フックでSMTP設定
add_action('phpmailer_init', function(PHPMailer\PHPMailer\PHPMailer $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.example.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = defined('SMTP_USER') ? SMTP_USER : '';
$phpmailer->Password = defined('SMTP_PASS') ? SMTP_PASS : '';
$phpmailer->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
$phpmailer->From = 'noreply@example.com';
$phpmailer->FromName = get_bloginfo('name');
});
ステップ4:wp-config.phpに認証情報を定義
// wp-config.php — 認証情報を定数として定義
define('SMTP_USER', 'user@example.com');
define('SMTP_PASS', 'your_smtp_password');
ステップ5:テストメール送信
# WP-CLI でテストメール送信
wp eval "wp_mail('test@example.com', 'SMTPテスト', 'メール送信テストです');"
# 結果確認
echo $?
管理画面から確認する場合:WP Mail SMTP → ツール → テストメール送信。
注意事項
- SMTPパスワードを
functions.phpに直接書かず、必ずwp-config.phpの定数か環境変数を使用してください - 無料のSMTPサービス(Gmail、Brevo等)は1日の送信数制限があります。大量送信には有料サービスをご利用ください
phpmailer_initフックは WordPress のwp_mail()経由の送信にのみ適用されます
まとめ
WordPressのメール送信にはSMTPを設定することを強く推奨します。phpmailer_init フックでコード設定するか、WP Mail SMTPプラグインを使用してください。Gmailの場合は次の記事「GmailのSMTP設定」を参照してください。