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設定」を参照してください。

お気軽にご相談ください

お見積りへ お問い合わせへ