WordPressからのメールがGmailに届かない問題を解決する方法

WordPressサイトからの通知メールがGmailに届かなくて困っていませんか?この記事では、実際に遭遇したメール配信問題とその解決方法を詳しく解説します。

Gmailに届かない問題の発生状況

  • bbPressの通知メールがGmail宛てに届かない
  • さくらのウェブメールでは送信履歴を確認できる

エラーメッセージ

550-5.7.26 Your email has been blocked because the sender is unauthenticated.
550-5.7.26 Gmail requires all senders to authenticate with either SPF or DKIM.

Authentication results:
DKIM = did not pass
SPF [wwwxxxx.sakura.ne.jp] with ip: [xxx.xx.xx.xxx] = did not pass

そもそもWordPressのメールの送信フローはどうなっているか

  • wp_mail() 関数が呼び出される
  • wp_mail() 内で PHPMailer オブジェクトを生成
  • PHPMailerが本文・件名・宛先などをセット
  • デフォルト設定では isMail() が使われ、PHPの mail() 関数を呼び出す
  • mail() 関数がサーバーの sendmail(または同等のMTA) に渡す
  • サーバーのMTAが宛先のメールサーバーへ配信
メソッドMailer設定値動作メリット
isMail()'mail'PHPの mail() 関数を使って、サーバー内のMTA(sendmail, Postfixなど)に渡す
サーバー依存で迷子メールやSPF/DMARCエラーが起きやすい
設定不要で簡単、ほとんどのレンタルサーバーで動く
isSendmail()'sendmail'サーバーに直接インストールされた sendmail コマンドを叩いて送信
sendmailがインストールされていない環境では不可
高度なオプションや細かい制御が可能
isSMTP()'smtp'SMTPプロトコルで指定したメールサーバー(Gmail, SendGridなど)に直接接続して送信
設定が必要(ホスト・ポート・ユーザー・パスワードなど)
認証付きで安全、外部サービス利用で到達率が高い

送信元ドメインのSPF・DKIM認証が設定されていない

送信元ドメインのSPF・DKIM認証が設定されていないというエラーは上記のフローでは、レンタルサーバーのMTAで発生していることになります。

こちら契約しているサーバー、ドメインの管理画面で設定を確認しましたが、認証設定ができませんでした、、、

ということで一つ選択肢である、PHPMailerの送信方式をsmtpで試してみることにしました!

SMTPとは何か

SMTP(Simple Mail Transfer Protocol)とは、メールを送信するための通信プロトコルです。インターネット上でメールを送信する際の標準的な仕組みで、メールサーバー間でメールをやり取りするために使用されます。

WordPressでメールを送信する場合、以下の2つの方法があります:

PHP Mailとは

WordPressが標準で使用する方法。サーバーのメール機能を直接利用してメールを送信します。設定は簡単ですが、到達率や認証面で課題があることがあります。

SMTP送信とは

外部のメールサーバー(Gmail、SendGridなど)を経由してメールを送信する方法。認証機能が充実しており、到達率が高いのが特徴です。

解決方法の選択肢

メール配信問題には複数の解決方法があります:

1. さくらサーバーでSPF/DKIM設定(根本解決)

  • メリット:サーバー側で認証問題を解決
  • デメリット:設定が複雑、反映に時間がかかる

2. 外部SMTPサービス利用(推奨)

  • メリット:確実性が高い、即座に使える
  • デメリット:外部サービスに依存

Gmail SMTPを使用した解決手順

今回は最も確実性の高い「Gmail SMTP」を使用した解決方法を実践しました。

必要なもの

  • Gmailアカウント
  • WP Mail SMTPプラグイン

手順1: プラグインのインストール

WordPress管理画面で「WP Mail SMTP」プラグインをインストール・有効化します。

WP Mail SMTP Pro - 世界No.1のWordPress SMTPプラグイン

WP Mail SMTPは、アクティブインストール数400万を超えるNo.1のW…
wpmailsmtp.com

手順2: Gmailアプリパスワードの生成

  1. Googleアカウント設定にアクセス
  2. 「セキュリティ」メニューを選択
  3. 「2段階認証プロセス」を有効化(未設定の場合)
  4. 「アプリパスワード」を選択
  5. アプリ:「メール」、デバイス:「その他(カスタム名)」を選択
  6. 「WordPress」と名前を入力して生成
  7. 16文字のパスワードをコピー(スペースは除去)

手順3: WP Mail SMTP設定

  1. メーラー選択で「その他の SMTP」を選択
  2. 以下の設定を入力:
    • SMTPホスト: smtp.gmail.com
    • ポート: 587
    • 暗号化: TLS
    • 認証: オン
    • ユーザー名: Gmailアドレス(例:10121012tt@gmail.com)
    • パスワード: 生成したアプリパスワード
    • From Email: 同じGmailアドレス
    • From Name: サイト名など

手順4: テスト送信

設定完了後、WP Mail SMTPの「メールテスト」機能でテストメールを送信し、正常に届くことを確認します。

トラブルシューティング

設定中に遭遇した問題と解決方法:

接続エラー(ポート465の場合)

SMTP Error: Could not connect to SMTP host.

解決方法: ポートを465から587に変更し、暗号化をSSLからTLSに変更

認証エラー

SMTP Error: Could not authenticate.

解決方法:

  • アプリパスワードからスペースを完全に除去
  • 新しいアプリパスワードを再生成
  • ユーザー名がGmailアドレス全体になっているか確認

さくらサーバーでの注意点

さくらのレンタルサーバーでは、外部SMTP接続に一部制限がある場合があります:

  • ポート465(SSL)がブロックされることがある
  • ポート587(TLS)の方が安定している
  • PHP Mailも代替手段として有効

結果と効果

Gmail SMTP設定完了後:

  • bbPressの通知メールが正常にGmailに届くようになった
  • WordPressからのすべてのメールが認証済みで送信される
  • メール到達率が大幅に改善

まとめ

WordPressからのメール配信問題は、多くの場合メール認証の不備が原因です。Gmail SMTPを使用することで:

  1. 確実な配信: 認証済みメールサーバーを使用
  2. 簡単な設定: プラグインで管理が容易
  3. 無料利用: Gmailアカウントがあれば追加費用なし

ただし、より大量のメール送信や企業利用の場合は、SendGridやAmazon SESなどの専門的なメール配信サービスの利用も検討することをお勧めします。

メール配信は現代のWebサイト運営において重要な要素です。適切な設定により、ユーザーとのコミュニケーションを確実に行えるようになります。