質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.60%

Contact Form 7 で送信エラーとなる。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,571

score 44

WordPressで無料テーマ「STINGER PLUS2」をカスタマイズしながらサイトを作っております。 

プラグイン「Contact Form 7」で申込みフォームを作成し、入力した内容がメール送信されるところまで動作確認出来たので、
スパム対策として「Google reCAPCHA」を利用出来るよう、サイト上の情報等を参考に設定をしたところ、「reCAPTCHA」自体は
正常に動くところまで確認出来ましたが、今度はメール送信が失敗するようになってしまいました。
サイト上の情報を調べたところ、プラグイン「WP Mail SMTP」を導入する事で解決できるとの情報を見つけ、「WP Mail SMTP」を
導入・有効化し、必要な設定を施して試してみましたが、「WP Mail SMTP」のテストメール送信では正常に送信出来るものの、
「Contact Form 7」の申し込みフォームからは送信に失敗してしまいます。

とりあえず「reCAPTCHA」に関連する設定(「Contact Form 7」のインテグレーション、問い合わせフォームに設置した「reCAPTCHA」、
「header.php」から「reCAPTCHA」を動作させるための1文等を全て削除)すると、送信出来る様になるので、「reCAPTCHA」に関する
設定部分が悪影響しているかと思われます。

「Contact Form 7」、「reCAPTCHA」の組み合わせによるメール送信失敗に関して、何かアドバイスを頂けると助かります。

念のため「reCAPTCHA」に施した「reCAPTCHA」に関する追加文を入れた形でソースをアップ致しますので、何かおかしい部分が
ありましたら、アドバイスをお願い致します。
※<head>~</head>の間に「<script src='https://www.google.com/recaptcha/api.js'></script>」を追加するとの事で
</head>の直前に追加しております。

また、メールのエラーログが存在していないか確認してみようと思い、ローカル環境(XAMPP)のメール送信時のログの格納先や
プラグイン「WP Mail SMTP」の関連フォルダ等を確認してみましたが、エラーログと思われるログ情報が見つかりませんでした。

※情報が少ないとのご指摘をいただきましたので、いくつか追記致します。

◎ローカル環境のバージョン
・WordPress:5.0.3-ja
・XAMPP:7.0.33
・Apache:2.4.37
・PHP:7.0.33

◎デバッグモード
・デバッグモードを試してみましたが、エラー箇所が上手く表示されませんでした。

◎reCAPTCHAのバージョン
・V2にて試しております。
・Contact Form 7のインテグレーションでサイトキーと秘密キーを指定することで
PHPに一文を追加する必要はないとの事で、その様な記述がされているサイトの
情報に従って試してみましたが、reCAPTCHAのチェックボックスが表示されず、
やはり送信すると失敗します。
参考にしたサイトにはフォームの編集画面に「reCAPTCHA」ボタンが表示されると
ありましたが、そもそもボタンガ表示されていないので、設定上の問題が
あるのかもしれません。

・V3を試してみた。
とりあえずV3のキーも取得して試してみたところ、こちらに関しては上手く
動作しました。
ただし、ユーザ登録制を前提としていることから、ユーザ登録の部分をWp-Membersの
プラグインを使っており、こちらのプラグインではV3のキーを設定するとキーエラーに
なることから、V3は対応していないかと思われます。

Contact Form 7とWp-Membersの両方でreCAPTCHAを使うとなると、V2とV3を混在して
利用するしかないかとも思っておりますが、何か良い方法等があれば、アドバイスを
お願いします。

※javacriptのエラーについて確認がありましたので、以下、試した内容とエラー内容を追記します。
・V2で当初質問事項に記載したPHPに「<script src='https://www.google.com/recaptcha/api.js'></script>」
を追加し、フォームに「<div class="g-recaptcha" data-sitekey="6LexpYsUAAAAAOsq1baRxIQ2-DuPSUtIYd_
wkkCZ"></div>」を追加した状態。

※reCAPTCHAのチェックボックスは表示されるが、以下のエラーが発生している。
・GET https://www.google.com/recaptcha/api.js?render=6LexpYsUAAAAAOsq1baRxIQ2-DuPSUtIYd_
wkkCZ&ver=3.0 net::ERR_ABORTED 400
・GET https://www.google.com/recaptcha/api.js?render=6LexpYsUAAAAAOsq1baRxIQ2-DuPSUtIYd_
wkkCZ&ver=3.0 net::ERR_ABORTED 400
・Uncaught Error: Invalid site key or not loaded in api.js: 6LexpYsUAAAAAOsq1baRxIQ2-
DuPSUtIYd_wkkCZ at Object.I4 [as execute] (recaptchaja.js:540) at execute ((index):1038) at Yb (recaptchaja.js:542)
at UF (recaptchaja.js:539) at recaptchaja.js:554
at recaptchaja.js:573 I4 @ recaptchaja.js:540
execute @ (index):1038
Yb @ recaptchaja.js:542 UF @ recaptchaja.js:539
(anonymous) @ recaptchaja.js:554 (anonymous) @ recaptchaja.js:573

・V2で当初質問事項に記載したPHPから「<script src='https://www.google.com/recaptcha/api.js'></script>」
を削除し、フォームに「<div class="g-recaptcha" data-sitekey="6LexpYsUAAAAAOsq1baRxIQ2-DuPSUtIYd_
wkkCZ"></div>」、またはを「[recaptcha]」を追加した状態。

※reCAPTCHAのチェックボックスが表示されず、以下のエラーが発生している。
・GET https://www.google.com/recaptcha/api.js?render=6LexpYsUAAAAAOsq1baRxIQ2-DuPSUtIYd_
wkkCZ&ver=3.0 net::ERR_ABORTED 400
・GET https://www.google.com/recaptcha/api.js?render=6LexpYsUAAAAAOsq1baRxIQ2-DuPSUtIYd_
wkkCZ&ver=3.0 net::ERR_ABORTED 400
・Uncaught ReferrenceError: Grecaptcaha is not defined

<!DOCTYPE html>
<!--[if lt IE 7]>
<html class="ie6" <?php language_attributes(); ?>> <![endif]-->
<!--[if IE 7]>
<html class="i7" <?php language_attributes(); ?>> <![endif]-->
<!--[if IE 8]>
<html class="ie" <?php language_attributes(); ?>> <![endif]-->
<!--[if gt IE 8]><!-->
<html <?php language_attributes(); ?>>
    <!--<![endif]-->
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# article: http://ogp.me/ns/article#">
        <meta charset="<?php bloginfo( 'charset' ); ?>" >
        <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
        <meta name="format-detection" content="telephone=no" >

        <?php if ( is_home() && !is_paged() ): ?>
            <meta name="robots" content="index,follow">
        <?php elseif ( is_search() or is_404() ): ?>
            <meta name="robots" content="noindex,follow">
        <?php elseif ( !is_category() && is_archive() ): ?>
            <meta name="robots" content="noindex,follow">
        <?php elseif ( is_paged() ): ?>
            <meta name="robots" content="noindex,follow">
        <?php elseif ( trim($GLOBALS["stdata9"]) !== '' &&  ($GLOBALS["stdata9"]) == $post->ID ): ?>
            <meta name="robots" content="noindex,follow">
        <?php elseif ( is_category() && trim($GLOBALS["stdata15"]) !== ''): ?>
            <meta name="robots" content="noindex,follow">
        <?php endif; ?>

        <link rel="alternate" type="application/rss+xml" title="<?php echo esc_attr( get_bloginfo( 'name' ) ); ?> RSS Feed" href="<?php bloginfo( 'rss2_url' ); ?>" />
        <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" >
        <!--[if lt IE 9]>
        <script src="<?php echo esc_url( get_template_directory_uri() ) ; ?>/js/html5shiv.js"></script>
        <![endif]-->
        <?php if ( is_singular() ) wp_enqueue_script( "comment-reply" ); ?>
        <?php wp_head(); ?>
        <?php get_template_part( 'analyticstracking' ); //アナリティクスコード ?>
        <?php get_template_part( 'st-ogp' ); //OGP設定 ?>
        <?php get_template_part( 'st-richjs' ); //効果追加 ?>
        <?php get_template_part( 'a-header-code' ); //ヘッダーに挿入するコード ?>
        <script src='https://www.google.com/recaptcha/api.js'></script> /* この1分を追加してます。(「reCAPCHA」関連) */
    </head>
    <body <?php body_class(); ?> >
    <?php if( (!st_is_mobile()) && (trim($GLOBALS['stdata110']) !== '') && (trim($GLOBALS['stdata111']) !== '') ): //動画用ID ?>
        <div id="st-player">
    <?php endif; ?>
            <div id="st-ami">
                <div id="wrapper" class="<?php st_wrap_class(); ?>">
                <div id="wrapper-in">
                    <header id="<?php st_head_class(); ?>">
                        <div id="headbox-bg">
                            <div class="clearfix" id="headbox">
                                <?php get_template_part( 'st-accordion-menu' ); //アコーディオンメニュー ?>
                                    <div id="header-l">
                                        <?php get_template_part( 'st-header-logo' ); //サイト名とディスクリプション ?>
                                    </div><!-- /#header-l -->
                                <div id="header-r" class="smanone">
                                    <?php if ( isset($GLOBALS['stdata43']) && $GLOBALS['stdata43'] === 'yes' ) {
                                        get_template_part( 'st-footer-link' ); //フッターリンク 
                                    } ?>
                                    <?php get_template_part( 'st-header-widget' ); //電話番号とヘッダー用ウィジェット ?>
                                </div><!-- /#header-r -->
                            </div><!-- /#headbox-bg -->
                        </div><!-- /#headbox clearfix -->
                    <?php get_template_part( 'st-header-image' ); //カスタムヘッダー画像 ?>

                    </header>
                    <div id="content-w">
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2019/02/04 12:57

    メールの送信は、Webサーバーが実行していると思いますが、Web サーバーのログには、どのようなメッセージが記録されているでしょうか?

    キャンセル

  • CHERRY

    2019/02/04 14:19 編集

    情報が少なすぎるので、他の質問も含めて回答がつかないのだと思います。

    Webサーバの種類、PHP のバージョン、WordPress のバージョンは、いくつですか?
    また、各設定はどのようになっていますか? 正しい設定になっていますか?

    ログが見つからないのであれば、WordPress をデバッグモードを設定して実行してみてください。
    http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
    https://wp-ap.net/help/wordpress-debugmode-on/


    Contact Form 7 の「reCAPTCHA」であれば、設定画面でサイトキーとシークレットを入力すれば、テンプレートファイルに ` <script src='https://www.google.com/recaptcha/api.js&#039;></script> ` を追加しなくても動作すると思うのですがどのように設定されていますか?

    reCAPTCHA は、 v2 と v3 で別物ですのでぞれぞれの設定に合わせたキーとシークレットが必要です。
    どちらの reCAPTCHA をお使いでしょうか?

    キャンセル

  • CHERRY

    2019/02/04 18:35 編集

    最初に確認するのを忘れいていましたが、JavaScript のエラー等は、出ていないですか?

    キャンセル

回答 1

checkベストアンサー

0

お使いのプラグインは、

で、reCAPTCHA を使いたいということですよね?

そうであれば、reCAPTCHA v3 のキーとシークレットを用意するだけで、テンプレートファイルを編集する必要はありません。

それぞれのプラグインの設定中に reCAPTCHA v3 の設定(キーとシークレットを設定する画面)がありますので、両方のプラグインで 同じ 「キー」と「シークレット」で設定すれば必要な JavaScript は自動的に追加されるので reCAPTCHA は問題なく動作します。

参考情報
WP-Members ドキュメント

Contact Form 7 ドキュメント

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る