如何根据表单输入发送给多个联系人Form 7收件人?

时间:2016-12-07 作者:mikemike

我们正在举办一场比赛,我们需要向表格中输入的电子邮件地址发送电子邮件。我用联系方式7来做这件事。

我认为这很简单,但表单不接受以下语法:

[friend1-email], [friend2-email], [friend3-email], [friend4-email], [friend5-email]
在“收件人”或“密件抄送”字段中。

我认为解决方案可能是在to字段中硬编码一个值,然后用钩子覆盖它,但我无法确定过滤器/钩子可能是什么。

感谢您的帮助。

1 个回复
最合适的回答,由SO网友:GKS 整理而成

无需编写任何代码,联系人表单7在Mail 部分您只需在中的“附加邮件头”文本框中写入电子邮件的邮件头Mail(第二个选项卡)部分。

将其放入“附加标题”文本框中。

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

enter image description here

您可以通过挂钩更改电子邮件标题数据wpcf7_before_send_mail 尝试以下代码。

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;
        }
}
}
wpcf7_before_send_mail 钩子在发送电子邮件之前运行,您可以修改表单数据。