web-dev-qa-db-fra.com

Comment puis-je envoyer à plusieurs destinataires du formulaire de contact 7 en fonction de leur saisie?

Nous organisons un concours dans le cadre duquel nous devons envoyer des courriers électroniques à des adresses électroniques saisies sur un formulaire. J'utilise le formulaire de contact 7 pour le faire.

Je pensais que ce serait simple, mais le formulaire n'acceptera pas la syntaxe de:

[friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]

Dans le champ À ou Cci.

Je pense que la solution pourrait consister simplement à coder en dur une valeur dans le champ À, puis à la remplacer par un hook, mais je ne peux pas déterminer ce que pourrait être ce filtre/hook.

Toute aide appréciée.

2
mikemike

Nul besoin d'écrire de code, le formulaire de contact 7 présente les fonctionnalités d'en-têtes supplémentaires dans la section Mail. En cela, il vous suffit d'écrire l'en-tête de l'e-mail dans la zone de texte En-têtes supplémentaires dans la section Mail (Deuxième onglet).

Placez ceci dans la zone de texte En-têtes supplémentaires.

Cc: [friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]

 enter image description here 

OR

Vous pouvez modifier les données de l'en-tête de l'e-mail avec des crochets wpcf7_before_send_mail essayer ci-dessous le code.

add_action('wpcf7_before_send_mail','dynamic_addcc');

function dynamic_addcc($WPCF7_ContactForm){

    // Check contact form id.
    if (33 == $WPCF7_ContactForm->id()) {

        $currentformInstance  = WPCF7_ContactForm::get_current();
        $contactformsubmition = WPCF7_Submission::get_instance();

        if ($contactformsubmition) {

            $cc_email = array();

            /* -------------- */
            // replace with your email field's names
            if(is_email($_POST['friend1-email'])){
                array_Push($cc_email, $_POST['friend1-email']);
            }
            if(is_email($_POST['friend2-email'])){
                array_Push($cc_email, $_POST['friend2-email']);
            }
            /* -------------- */

            // saparate all emails by comma.
            $cclist = implode(', ',$cc_email);

            $data = $contactformsubmition->get_posted_data();

            if (empty($data))
                return;

            $mail = $currentformInstance->prop('mail');

            if(!empty($cclist)){
                $mail['additional_headers'] = "Cc: $cclist";
            }

            // Save the email body
            $currentformInstance->set_properties(array(
                "mail" => $mail
            ));

            // return current cf7 instance
            return $currentformInstance;
        }
}
}

__Cookle wpcf7_before_send_mail s'exécute avant l'envoi du courrier électronique, vous pouvez modifier les données du formulaire.

6
Govind Kumar