• TOP
  • 記事一覧
  • WordPressのローカル開発環境でのメール送信をマスターする方法

WordPressのローカル開発環境でのメール送信をマスターする方法

更新日:2025/03/01

WordPressサイトを開発していると、お問い合わせフォームやユーザー登録などのメール送信機能をテストしたいときがあります。本番環境ならサーバーの設定で簡単に送信できますが、ローカル環境ではどうすればいいのでしょうか?

今回は、Docker環境を使ったWordPressのローカル開発で、メール送信をテストする方法を解説します。

WordPressのメール送信の仕組みを理解する

まず、WordPressがどのようにメールを送信しているのかを理解しましょう。

WordPressは内部的にwp_mail()という関数を使ってメールを送信します。この関数はPHPの標準関数であるmail()のラッパーですが、実際にはPHPMailerライブラリを利用しています。

基本的な流れは次のとおりです:

  1. プラグイン(Contact Form 7など)がフォーム送信を処理
  2. wp_mail()関数を呼び出し
  3. PHPMailerを使って実際のメール送信を実行
  4. サーバーのメール設定を使って配信
WordPress メール送信フロー Contact Form 7 フォーム送信処理 wp_mail() WordPressのメール関数 PHPMailer メール送信ライブラリ メールサーバー SMTPサーバー メール配信 ユーザーの受信ボックス 1. 送信処理 2. 呼び出し 3. SMTP接続 4. 配信 環境による違い 本番環境: レンタルサーバーの メール設定を使用 ローカル環境: MailHogなどの ダミーSMTPを使用

レンタルサーバー環境では、WordPress(およびContact Form 7)が特別なSMTP設定をしなくても、サーバーに既に設定されているメールシステムを自動的に利用できる点が大きな特徴です。

レンタルサーバーでのWordPressメール送信の仕組み レンタルサーバー環境 WordPress Contact Form 7 フォーム処理 wp_mail() WordPressメール関数 PHPMailer メール送信ライブラリ php.ini PHPの設定ファイル サーバーメールシステム Sendmail/Postfix メール転送エージェント(MTA) SMTP設定 ホスト名、認証情報など メール配信 1. フォーム送信 2. メール処理を委譲 3. 設定参照 4. サーバーMTA利用 5. 設定参照 6. メール送信 レンタルサーバーでは初期設定済みのメールシステムが利用可能。WordPressは設定なしでこれを使用できる。

本番環境のレンタルサーバーでは、サーバー側のメール設定が自動的に使われるため、特別な設定なしでメールが送信できます。しかし、ローカル環境では通常メールサーバーが設定されていないため、デフォルトでは送信できません。

ローカル環境でメール送信をテストする方法

ローカル開発環境でメール送信をテストするには、主に以下の方法があります:

1. MailHogを使った方法(おすすめ)

MailHogは、開発環境で使用するダミーのSMTPサーバーです。メールを実際に外部に送信せず、専用のWeb UIで内容を確認できます。

Docker Composeでの設定例

services:
  db:
    image: mysql:8.0
    # 省略...
    
  wordpress:
    image: wordpress:latest
    depends_on:
      - db
      - mailhog
    # 省略...
      
  mailhog:
    image: mailhog/mailhog
    ports:
      - "8025:8025"  # Web UI
      - "1025:1025"  # SMTP Server

WordPressとの連携方法

MailHogと連携するには、WordPressのSMTP設定を変更する必要があります。「WP Mail SMTP」などのプラグインを使うと簡単です:

  1. WordPressの管理画面からプラグインを追加
  2. 「WP Mail SMTP」をインストールして有効化
  3. 設定画面で「Other SMTP」を選択
  4. 以下のように設定:
    • SMTPホスト: mailhog(Dockerネットワーク名)
    • SMTPポート: 1025
    • 暗号化: 無し
    • 認証: オフ

メールの確認方法

フォームを送信した後、ブラウザでhttp://localhost:8025にアクセスすると、MailHogのWeb UIが表示されます。ここで送信されたすべてのメールの内容を確認できます。

2. WP Mail SMTPプラグインを使って外部SMTPサーバーと連携する方法

本番環境に近い形でテストしたい場合は、GmailやAmazon SESなどの外部SMTPサービスを利用する方法もあります。

  1. 「WP Mail SMTP」プラグインをインストール
  2. Gmailなど使用したいSMTPサービスを選択
  3. 必要なAPIキーや認証情報を設定
  4. テストメールを送信して確認

3. メール送信をシミュレートする方法

実際にメールを送信せず、送信処理だけをシミュレートする方法もあります。

Contact Form 7の場合、「追加設定」タブに以下のコードを追加するだけです:

skip_mail: on

この設定を有効にすると、メールは送信されませんが、フォーム処理自体は正常に完了します。

Contact Form 7でのテスト手順

Contact Form 7は多くのWordPressサイトで使われているお問い合わせフォームプラグインです。ローカル環境でのテスト手順を詳しく見ていきましょう。

MailHogを使ったテスト手順

  1. Docker Composeファイルを更新して、MailHogサービスを追加
  2. コンテナを再起動:docker-compose up -d
  3. WordPressにWP Mail SMTPプラグインをインストール
  4. SMTP設定を行う(ホスト:mailhog、ポート:1025)
  5. Contact Form 7のフォームに必要事項を入力して送信
  6. ブラウザでhttp://localhost:8025にアクセスし、メールを確認

これで、実際のメールアドレスにメールを送信することなく、ローカル環境でフォームの動作確認ができます。HTMLメールの表示確認やメールヘッダの確認も可能です。

デバッグとトラブルシューティング

メール送信でエラーが発生した場合は、以下の方法でデバッグできます:

WordPressのデバッグログ

wp-config.phpに以下の設定を追加すると、詳細なログが記録されます:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WPCF7_DEBUG', true);

PHPMailerのデバッグ設定

フック機能を使ってPHPMailerのデバッグモードを有効にすることもできます:

add_action('phpmailer_init', function($phpmailer) {
  $phpmailer->SMTPDebug = 2;
  $phpmailer->Debugoutput = 'error_log';
});

まとめ

ローカル開発環境でのWordPressメール送信テストには、MailHogを使う方法が最も簡単で効果的です。Docker環境と組み合わせることで、本番環境に影響を与えることなく、安全にメール機能のテストができます。

実際のプロジェクトでは、開発段階ではMailHogなどのダミーサーバーを使い、ステージング環境や本番環境では実際のメールサーバー設定を使うという使い分けが一般的です。

これらの方法を活用して、WordPressサイトのメール機能を効率的にテストしましょう!

人気記事ランキング
話題のキーワードから探す