サーバー移転で、サイトの表示は確かめても、メールは確かめ忘れがちです。
メールは壊れても画面に出ません。
お問い合わせを送った人には「送信しました」と出て、運営者には何も届かない、という状態が続きます。
筆者のサイトでも、移転の2週間ほどあとに、お問い合わせのメールが止まっていました。
この記事では、移転のあとにメールを確かめる順番と、その方法をまとめます。
この記事で分かること
- 移転のあとでメールだけが壊れる、4つの原因
- WordPressの送信設定のどこを見るか
- wp_mailを直接試す方法と、フォームから試す方法
- DNSと旧サーバーの受信箱で確かめること
- 確認を毎週の自動テストにする方法
結論:確かめる順番
| 順番 | 確かめること | 見つかる壊れ方 |
|---|---|---|
| 1 | WordPressの送信設定(SMTP)のホスト名 | 旧サーバー名のまま認証に失敗する |
| 2 | wp_mailを直接呼ぶ | 設定の有無に関係なく送れるか |
| 3 | フォームから本当に送る | 管理者宛と自動返信の両方が届くか |
| 4 | DNS(MX・SPF・DKIM・DMARC) | 旧サーバー名が残って迷惑メール扱い |
| 5 | 旧サーバーの受信箱 | 旧サーバーが自分で受け取って止めている |
| 6 | 通知系(コメント・更新・購入) | フォーム以外の送信 |
1と2は数分で終わります。
3は実際に送るので、受信箱を見られる状態でやります。
なぜ移転のあとにメールだけ壊れるのか
- WordPressのSMTP設定(プラグインやCode Snippets)に、旧サーバーのホスト名とパスワードが入っている
- DNSのSPFレコードに旧サーバー名が書かれていて、新サーバーからの送信が認証に落ちる
- ドメインのメール設定が旧サーバーに残っていて、旧サーバーが自分宛てとして受け取ってしまう
- メール箱のデータを移していない、または転送の設定が旧サーバーにしかない
どれも、サイトの表示とは関係なく起きます。
移転の作業に「メール」の項目を入れておかないと、気づくのは問い合わせが来ないと感じたときになります。
1. WordPressの送信設定を探す
WordPressが外部のSMTPで送る設定は、次の3か所のどれかにあります。
- SMTPのプラグイン(WP Mail SMTPなど)の設定画面
- Code Snippetsに入れた
phpmailer_initのコード - テーマの functions.php や wp-config.php
SSHで入れるなら、次のように探すと早いです。
cd public_html
grep -rn -i 'phpmailer_init\|isSMTP' \
wp-content/mu-plugins \
wp-content/themes/*/functions.php \
wp-config.phpCode Snippetsのコードはデータベースにあるので、管理画面の一覧で「SMTP」「mail」で探します。
見つけたら、Host が今のサーバー名か、Username と Password が今のメール箱のものかを確かめます。
筆者の場合は、2025年に作ったスニペットの Host が移転前のサーバー名のままでした。
移転のあとしばらくは旧サーバーが認証を受け付けていたので、すぐには壊れませんでした。
旧サーバーが止まった時点で、全部のメールが「SMTP エラー: 認証できませんでした」で失敗するようになりました。
関連記事:WordPressをコードだけでSMTP化する方法
2. wp_mailを直接試す
フォームを使わずに、WordPressの送信だけを試します。
WP-CLIが使えるなら、次の1行で結果が分かります。
wp eval 'add_action("wp_mail_failed",
function($e){echo "FAILED: ".$e->get_error_message()."\n";});
var_dump(wp_mail("info@example.com",
"移転後の送信テスト", "届いたら成功"));'bool(true) と出て、受信箱に届けば、送信の設定は正常です。
FAILED: の後ろに理由が出たら、それが直す場所です。
SMTPの設定を一時的に外して試したいときは、wp eval の中で先に remove_all_actions("phpmailer_init"); を呼びます。
それで届くなら、サーバー標準の送信は生きていて、SMTPの設定だけが壊れています。
3. フォームから本当に送る
送信の設定が正常でも、フォームのプラグインの設定(宛先・差出人・自動返信)は別です。
自分のフォームから、実際に1件送ります。
- 管理者宛のメールが届くか
- 自動返信が、入力したアドレスに届くか
- 迷惑メールフォルダーに入っていないか
- 差出人のアドレスが、今のドメインのものになっているか
Snow Monkey Formsは、管理者宛の送信に失敗すると「管理者メールの送信に失敗しました」と画面に出します。
ただし、完了ページへの転送をJavaScriptで足している場合は、この表示を見ないまま完了ページに移ることがあります。
転送は、完了の応答が返ってから動くようにしておきます。
4. DNSに旧サーバー名が残っていないか
メールの認証(SPF・DKIM・DMARC)は、ドメインのDNSに書いてあります。
SPFに a:旧サーバー名 や旧サーバーのIPが残っていると、新サーバーから送ったメールが認証に落ち、迷惑メールに入りやすくなります。
MXレコードが旧サーバーを指したままなら、受信が旧サーバーに行きます。
| レコード | 役割 | 確かめること |
|---|---|---|
| MX | 受信するサーバー | 新サーバーの案内どおりか |
| SPF | 送信を許可するサーバー | 新サーバー名か、新サーバーの include が入っているか |
| DKIM | 送信の署名 | 新サーバーで発行した公開鍵に差し替えたか |
| DMARC | 認証に落ちたときの方針 | p= の値が意図どおりか |
関連記事:SPF・DKIM・DMARCの確認方法
関連記事:DNSの浸透を確認する方法
5. 旧サーバーの受信箱を見る
旧サーバーにドメインのメール設定が残っていると、旧サーバーはそのドメイン宛てのメールを「自分の担当」として受け取ることがあります。
旧サーバーを経由して送ったメールが、新サーバーに届かず、旧サーバーの受信箱に入る形です。
特に、WordPressのSMTP設定が旧サーバーを指したままのときに起きます。
- 旧サーバーの契約が残っているうちに、旧サーバーのウェブメールで受信箱を見る
- 移転の日より後のメールが入っていたら、転送や保存で回収する
- 旧サーバーのメール設定(ドメインの登録)を消すか、解約する
解約してしまうと、この確認はできなくなります。
解約の前に、一度は見ておきます。
6. フォーム以外の送信
- コメントの通知、WordPress本体の更新通知
- WooCommerceの注文メール
- 会員サイトのパスワード再設定メール
- バックアッププラグインの完了通知
どれもwp_mailを通るので、2で直れば直ります。
ただ、宛先がサーバー移転の前のアドレスになっていないかは、個別に見ます。
7. 毎週の自動テストにする
移転の直後に確かめても、SMTPのパスワードの期限や、サーバーの設定変更で、あとから壊れることがあります。
筆者は、フォームを本番と同じ経路で毎週自動で送り、届くまでを確かめる仕組みを入れました。
この仕組みを動かした初日に、1で書いた壊れ方が見つかりました。
よくある質問
Q. 移転の前に確かめておくことはありますか
SMTPの設定がどこにあるかを、移転の前に控えておきます。
移転の作業の最後に「フォームから1件送る」を入れておくと、ここで止まれます。
Q. サーバー標準の送信で足りますか
多くの共用サーバーでは、SPFに自社のサーバーが入っているので、標準の送信でも届きます。
SMTPを使うのは、送信元を1つにそろえたいときや、外部の配信サービスを使うときです。
SMTPが壊れたときに標準の送信へ戻せるよう、設定は1か所にまとめておきます。
Q. 止まっていた期間の問い合わせは取り戻せますか
旧サーバーの受信箱に残っていれば回収できます。
送信に失敗していた場合は、フォームのプラグインが内容を保存していない限り残りません。
完了ページのアクセス数(GA4など)で、止まっていた期間に送信があったかどうかは分かります。
まとめ
- 移転のあとは、表示だけでなくメールを確かめる
- 順番は、SMTPの設定 → wp_mailの直接テスト → フォームから送る → DNS → 旧サーバーの受信箱
- 旧サーバーを解約する前に、受信箱と設定を見る
- 毎週の自動テストにすれば、あとから壊れても気づける



