wordpress Contact Form 7 エラー「メッセージの送信に失敗しました」(WP Mail SMTPで解決)

2018年4月6日

目次

WordPress の Contact Form 7 を使ったコンタクトのページからメールを送信しようとすると以下のエラーが表示されて、メールが送信できないとの連絡がありました。

「メッセージの送信に失敗しました。間をおいてもう一度お試しいただくか、別の手段で管理者にお問い合わせ下さい。」

いつからこの現象が発生していたのかは定かではありませんが、よく聞いてみるとサーバー側でメールの設定に関して変更があったようで、その後この現象が発生しているらしいことがわかりました。

Contact Form 7 の設定の確認

左側メニューの「お問い合わせ」をクリックして確認すると「1件の設定エラーを検出しました」と使用しているコンタクトフォームに表示されていました。(Contact Form 7 の設定を検証というリンクがあればそれをクリックして検証することができます)

コンタクトフォームのタイトルをクリックして、メールタブを確認すると以下のように表示されていました。

送信元:[your-name] <[your-email]>
サイトのドメインに属していないメールアドレスが送信元に設定されています。

「サイトのドメインに属していないメールアドレスが送信元に設定されています。」の右側に表示されている外部リンクのアイコンをクリックして、そこから FAQ のリンクをクリックすると以下のページが表示されます。

https://contactform7.com/configuration-validator-faq/#from-email-in-site-domain

「成りすましを防止するために、送信元には使用しているドメインのアドレスを使うことが推奨されています」というような記述があり、その下には返信用のヘッダを追加する方法が記載されています。

これを参考に以下のように変更したところ、「サイトのドメインに属していないメールアドレスが送信元に設定されています。」という警告は消えました。

送信元:[your-name] <[your-email]> →[your-name] <info@xxxxxx.net>
※info@xxxxxx.net はこのサイトのドメインのメールアドレス(送信先アドレスと同じ)

追加ヘッダーに返信用のヘッダ Reply-To: [your-email] を追加

変更した設定を保存して、メールの送信をテストしてみましたが、相変わらず「メッセージの送信に失敗しました。間をおいてもう一度お試しいただくか、別の手段で管理者にお問い合わせ下さい。」のエラーが表示され、メールを送信できません。。。

メールサーバー(ホスティング側)の確認

使用しているホスティング(共用サーバー)は inMotion という米国の会社で、サーバー側の設定を確認したところ、メールクライアントの設定(Mail Client Manual Settings)は以下のようになっていました。

SSLなし(非推奨)とSSL ありの設定がありました。(この辺りが原因のような感じです)


プラグイン WP Mail SMTP のインストール

使用しているメールサーバーを簡単に設定・指定できるようにするためプラグイン「WP Mail SMTP」をインストールしました。

WP Mail SMTP:https://wordpress.org/plugins/wp-mail-smtp/

プラグイン → 「新規追加」から検索に「WP Mail SMTP」と入力すると以下が表示されるので、「WP Mail SMTP 」の「今すぐインストール」をクリックしてインストール。

プラグインを有効化して「設定」をクリック。

以下のようなページが表示されるので設定します。

送信元アドレス:コンタクトフォームで使うアドレスを指定
送信者名:名前を指定
メーラー:今回の場合は「Other SMTP」を選択
返信先: 送信元アドレスを返信先 (return-path) として設定にチェックを入れる

以下はホスティングで確認した値を指定。

SMTP ホスト:ホスト名を指定
SMTP ポート:465 (暗号化ありの場合)
暗号化:SSL
Auto TLS:On
認証:On
SMTP Username:ユーザー名を指定
SMTP Password:メールのパスワードを指定

設定が完了したら「Save Settings」をクリックして保存します。

また、一番下に以下のように記載されています。

The password is stored in plain text. We highly recommend you setup your password in your WordPress configuration file for improved security; to do this add the lines below to your wp-config.php file.

「このプラグインではパスワードがプレインテキストで保存されるため、wp-config.php に以下を追加することを強く推奨します」というような内容です。

以下を wp-config.php に追記します。

define( 'WPMS_ON', true );
define( 'WPMS_SMTP_PASS', 'パスワード' );

設定したSMTPサーバーでメールが送信できるかは、「Email Test」タブで確認できます。

上記設定完了後、コンタクトフォームから問題なくメールを送信できるようになりました。