MW WP Formの自動返信メールが特定のメール(Gmail)に届かない場合の対応方法(MixHostでの不具合)

  1. MixHostでMW WP Formの自動返信メールがGmailに届かない
  2. 発生したエラーの内容
  3. メール送信エラーの現象が再現するか確認
  4. 解決方法
  5. WP Mail SMTPの設定方法
  6. まとめ

MixHostでMW WP Formの自動返信メールがGmailに届かない

ミックスホスト(MixHost)サーバーに置いているサイトで、ある日を境にWordPressのMW WP Formプラグインから送信される「自動返信メール」の送信先がGmailの場合のみエラーになって届かないという現象に遭遇したので、記録として残します。
現象が発生した時は、Gmail以外のドメインには問題なく送信できました。
フォームからすべてのメールがGmailに届かないかというと実はそういう事はなく、管理者宛メールのCCにgmailを設定したのですが、そちらはちゃんと届きます。

遭遇したサーバーやCMSの概要

  1. WebとdnsサーバーはMixHost(ミックスホスト)
  2. ドメインを設定し、メールアドレスもそのドメインのメールを作成してWPで使用
  3. DNSにドメインの「SPFレコード」は設定済
  4. WordPress5.5系をインストール。MW WP Formプラグインでフォームを作成して運用。
    フォームから申し込みをすると管理者宛と入力者が指定したメールアドレスに完了メールが送信される。

発生したエラーの内容

エラーメッセージを見ると、エラー番号 421-4.7.0で、Gmail側の認証チェックにパスできなかった(スパム判定された)からメールをブロックするよ、という感じの内容のようです。

<****@gmail.com>: host ***.gmail-smtp-**.*.google.com[000.000.000.***]
said: 421-4.7.0 This message does not have authentication information or
fails to pass 421-4.7.0 authentication checks. To best protect our users from spam,
the 421-4.7.0 message has been blocked.
Please visit 421-4.7.0
https://support.google.com/mail/answer/81126#authentication for more 421
4.7.0 information. *****.56 - gsmtp (in reply to end of DATA command)
(一部伏せ字を使用しています)

メール送信エラーの現象が再現するか確認

  • フォームに設定しているメールアドレスで、MixHostのWebメールを使ってブラウザからGmail宛にテスト送信を試したがメールは届いた
  • WordPressのフォームから送信される「自動返信メール」は届かない(サーバーはミックスホスト)
  • 動作テストのため、同じ設定で設置した「Xserver」では、WordPressのフォームから送信された自動返信メールがgmailに届いた

MW WP Formのメールの送信処理は、wp_mail関数が使用されているのですが、単純にプログラムから直接自動返信メールを送信する方法だと、サーバーによっては迷惑メールと判定されてしまう事例があったので、(恐らく)それと同様の事が発生したのでしょう。

解決方法

このフォームから送信される自動返信メールを「SMTPサーバーを経由してメールを送信する方法」に変更したら、Gmailへの不達がなくなりました。
SMTP (Simple Mail Transfer Protocol)とは、パソコンなどのメールソフトでも使われている方式で、電子メールを送信する時に使います。
このメール送信を担当するサーバーをSMTPサーバーと呼びます。

すでにWordPressのプラグインで、SMTPを使ったメール送信機能を実現するプラグインが公開されています。
WP Mail SMTP、Easy WP SMTP、WP SMTPなど。この中から好みのものをインストールすれば良いです。

私はWp Mail SMTPプラグインを使いました。鳥のアイコンが可愛いですね。

WP Mail SMTP(プラグイン公式サイト)
https://ja.wordpress.org/plugins/wp-mail-smtp/

WP Mail SMTPの設定方法

  1. WordPressにプラグインをインストールし、有効ボタンを押してプラグインを起動します。
  2. WP Mail SMTPの設定

    WordPress管理画面からWP Mail SMTP設定画面を開き、一般タブに移動します。
    この設定画面に、フォームで使用しているメールアドレスのアカウント情報を入力していきます。
    (アカウント情報とは、実際にメールソフトで送受信する際に使用される情報)

    送信元メールアドレス メールアドレスを入力します。
    メーラー その他のSMTPを選択します。
    SMTPホスト SMTPサーバー名を入力します。
    暗号化 私の環境ではSSLを選択。
    SMTPポート 465などのポート番号が入ります。
    指定されているポート番号を数字で入力してください。
    SMTPユーザー名 メールアドレスで使用するユーザー名を入力。
    SMTPパスワード メール送受信で使用するパスワードを入力。
  3. WP Mail SMTPからテスト送信

    「メールテスト」タブをクリックすると、この画面が表示されます。

    「送信先」欄に送信したいメールアドレスを入力し「メールを送信」ボタンを押すと、指定されたメールアドレスにテストメールが届きます。
    今回はGmailのアドレス(******@gmail.com)を入力して、WordPressから送信されたメールが届く事を確認しましょう。

設定が終わったら、WordPressのフォームからGmailに自動返信メールが届くか確認しましょう。届いていれば完了です。

まとめ

今回この現象は「ミックスホスト」で発生しましたが、他社サーバーでも発生する可能性はあると思います。
まったく届かないわけではなく、特定のメールアドレスでのみ発生したので、メールが相手に届いていない事に気づきにくい事があるので少々厄介ですね。

クライアント案件でフォームを作成したら、動作テストする時は自動返信メールはGmail宛、それ以外のメールの宛の2パターンでテスト送信をするか、上記の方式で設定しておくと良さそうです。

書いた人:やまライダー

やまライダーです。仙台市でブロガー兼システム寄りのWebディレクターとして働きながら嫁と一緒に子育て奮闘中!
タスク管理ツール「Todoist」でガントチャートが作成ができる補助ツール「Todoist ガントチャートコンバータ」作者。
鳥が好きでキンカチョウ(錦花鳥)を飼っています。

プロフィールを見る
やまライダーのTwitter(自転車用アカウント)
やまライダーのTwitter(システム寄りwebディレクター用)
やまライダーのInstagram