フォーラムへの返信

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 Terui

    (@teruiazalea)

    コードにミスが見つかりました。

    
    function wpcf7_validate_email_reject_nonrfcmail($result,$tag){
        $tag = new WPCF7_FormTag( $tag );
    
        $email = isset($_POST[$tag->name]) ? trim($_POST[$tag->name]) : '';
    
        if (!empty($email)) {
            list( $local, $domain ) = explode( '@', $email, 2 );
            if ((substr($local, 0, 1) == '.') || (substr($local, -1, 1) == '.')) {
                $result->invalidate ($tag, '.で始まるアドレスや、.@を含むアドレスは中継・受信できないことがあるためメール送信できません。お電話にてご連絡くださいますようお願い申し上げます。'); 
            } else {
                $pos = strpos($local, '..');
                if ($pos !== false) {
                    $result->invalidate ($tag, '..を含むアドレスは中継・受信できないことがあるためメール送信できません。お電話にてご連絡くださいますようお願い申し上げます。'); 
                }
            }
        }
        
        return $result;
    }
    
    add_filter('wpcf7_validate_email', 'wpcf7_validate_email_reject_nonrfcmail', 11, 2);
    add_filter('wpcf7_validate_email*', 'wpcf7_validate_email_reject_nonrfcmail', 11, 2);
    

    として(先のソースで break; が500エラー原因だったようです)、
    無事メールアドレスのチェックを厳格に出来ました。

    不慣れなカスタマイズにおいて、助言が大変役に立ち、
    実装したいことが実現できて幸せです。
    ほんとうにありがとうございます。

    トピック投稿者 Terui

    (@teruiazalea)

    カスタマイズの方法など知らないところから手を付けておりましたが、

    wp/wp-content/plugins/contact-form-7/includes/functions.php
    にカスタムバリデーションのコード

    
    function wpcf7_validate_email_reject_nonrfcmail($result,$tag){
        $tag = new WPCF7_FormTag( $tag );
    
        $email = isset($_POST[$tag->name]) ? trim($_POST[$tag->name]) : '';
    
        if (!empty($email)) {
            list( $local, $domain ) = explode( '@', $email, 2 );
            if ((substr($local, 0, 1) == '.') || (substr($local, -1, 1) == '.')) {
                $result->invalidate ($tag, '.で始まるアドレスや.で終わるアドレスは中継・受信できないことがあるため送信できません'); 
                break;
            } else {
                $pos = strpos($local, '..');
                if ($pos !== false) {
                    $result->invalidate ($tag, '..を含むアドレスは中継・受信できないことがあるため送信できません'); 
                    break;
                }
            }
        }
        
        return $result;
    }
    
    add_filter('wpcf7_validate_email', 'wpcf7_validate_email_reject_nonrfcmail', 11, 2);
    add_filter('wpcf7_validate_email*', 'wpcf7_validate_email_reject_nonrfcmail', 11, 2);
    

    を追記し、
    コンタクトフォーム→その他の設定、は空欄にしたところ、
    ようやくメール送信しなくなりました。

    しかし、エラーメッセージの表示もなく、
    ぐるぐると処理中であるアニメーション画像が表示され続けているので、
    エラーメッセージ表示に確実に繋げる方法などありましたら
    アドバイスお願いします。
    (フォーム設置者にも相談中です。)

    • この返信は6年、 12ヶ月前にTeruiが編集しました。理由: より丁寧な説明に見直し
    トピック投稿者 Terui

    (@teruiazalea)

    確認させてほしいのですが、
    上記に示したカスタムバリデーションのコードは、
    どこに記載すれば良いのでしょうか、
    ドキュメント類を読むに連れて、
    (フォーム、メール、メッセージと並ぶ)「その他の設定」に現在記載していますが、
    機能していないようなので、
    サーバー上に別途ファイルを起こして置くものでしょうか?

    トピック投稿者 Terui

    (@teruiazalea)

    不手際や説明不足でご迷惑をおかけしてすみません。

    
    add_filter('wpcf7_validate_email', 'wpcf7_validate_email_reject_nonrfcmail', 11, 2);
    add_filter('wpcf7_validate_email*', 'wpcf7_validate_email_reject_nonrfcmail', 11, 2);
     
    function wpcf7_validate_email_reject_nonrfcmail($result,$tag){
      $tag = new WPCF7_FormTag( $tag );
    
      $email = isset($_POST[$tag->name]) ? trim($_POST[$tag->name]) : '';
    
      if (!empty($email)){
        list( $local, $domain ) = explode( '@', $email, 2 );
        if ((substr($local, 0, 1) == '.') || (substr($local, -1, 1) == '.')) {
          $result->invalidate ($tag, '.で始まるアドレスや.で終わるアドレスは中継・受信できないことがあるため送信できません'); 
          break;
        } else {
          $pos = strpos($local, '..');
          if ($pos !== false) {
            $result->invalidate ($tag, '..を含むアドレスは中継・受信できないことがあるため送信できません'); 
            break;
          }
        }
      }  
     
     return $result;
    }
    

    カスタムバリデーションの事例を参考にこんなコードを足してみましたが、
    試しに test..test@example.com を与えたらエラーメッセージが表示されずに通ってしまい、
    先方には送られず身内にのみメール送信されているという状況です。

4件の返信を表示中 - 1 - 4件目 (全4件中)